go 語言學習記錄2

2021-09-02 22:29:15 字數 3585 閱讀 7270

//把str字串按空格進行分割,並返回乙個slice

str := "string one two stree"

sl := strings.fields(str)

//切分完成後進行for迴圈讀取其中的資料

/** for 迴圈示例

range為關鍵字 得到的是下標和值

因為下面**不需要下標 所以用`_`進行了接收

如果需要使用下標 可以將 `_` 替換成 i

*/ for _, val := range sl

/**strings.trimspace(s) 來剔除字串開頭和結尾的空白符號

join 用於將元素型別為 string 的 slice 使用分割符號來拼接組成乙個字串:

strings.join(sl string, sep string) string

strconv 是型別轉換類 任何型別都可以轉換成為 string 但是string轉換成

其他引數不是一定可以的

返回的格式 :val, err = strconv.atoi(s)

*/ int_str := strconv.intsize

fmt.println(int_str)

unicode 包含了一些針對測試字元的非常有用的函式(其中 ch 代表字元):

判斷是否為字母:unicode.isletter(ch)

判斷是否為數字:unicode.isdigit(ch)

判斷是否為空白符號:unicode.isspace(ch)

time.now().format(『2018-12-07』)

把當前時間轉換為format裡面傳入的格式

如果需要在應用程式在經過一定時間或週期執行某項任務(事件處理的特例),

則可以使用 time.after 或者 time.ticker:

另外,time.sleep(duration d) 可以實現對某個程序(實質上是 goroutine)時長

為 d 的暫停。

t := time.now()

fmt.println(t) // e.g. wed dec 21 09:52:14 +0100 rst 2011

fmt.printf("%02d.%02d.%4d\n", t.day(), t.month(), t.year())

// 21.12.2011

t = time.now().utc()

fmt.println(t) // wed dec 21 08:52:14 +0000 utc 2011

fmt.println(time.now()) // wed dec 21 09:52:14 +0100 rst 2011

// calculating times:

week := 60 * 60 * 24 * 7 * 1e9 // must be in nanosec

week_from_now := t.add(time.duration(week))

fmt.println(week_from_now) // wed dec 28 08:52:14 +0000 utc 2011

// formatting times:

fmt.println(t.format(time.rfc822)) // 21 dec 11 0852 utc

fmt.println(t.format(time.ansic)) // wed dec 21 08:56:34 2011

fmt.println(t.format("02 jan 2006 15:04")) // 21 dec 2011 08:52

s := t.format("20060102")

fmt.println(t, "=>", s)

可以控制資料結構的指標 但是不能進行指標運算

go語言訪問位址符是&放到乙個變數前使用就會返回相應變數的記憶體位址

位址可以儲存在乙個叫做指標的特殊資料型別中

(指標的格式化識別符號為 %p)

乙個指標變數可以指向任何乙個值的記憶體位址 它指向那個值的記憶體位址

使用乙個指標引用乙個值被稱為間接引用

乙個指標變數通常縮寫為 ptr。

對於任何乙個變數 var, 如下表示式都是正確的:var == *(&var)。

改變指標中的值時 原物件的值也會改變 因為他們兩個指向同乙個位址

注意不能得到乙個文字或常量的位址

對乙個空指標的反向引用是不合法的,並且會使程式崩潰

var i1 = 5

fmt.printf("an integer: %d, it's location in memory: %p\n", i1, &i1)

var intp *int //宣告指標變數 //

intp = &i1

fmt.println( *intp) //獲取指標中的類容

//改變指標中的值時 原物件的值也會改變 因為他們兩個指向同乙個位址

sts := "good bye"

var p *string = &sts

*p = "ciao"

fmt.printf("here is the pointer p: %p\n", p) // prints address

fmt.printf("here is the string *p: %s\n", *p) // prints string

fmt.printf("here is the string s: %s\n", sts) // prints same string

關鍵字 if 和 else 之後的左大括號 必須和 else-if 關鍵字在同一行。

這兩條規則都是被編譯器強制規定的。

非法**

if x

else

當 if 結構內有 break、continue、goto 或者 return 語句時 go **的常見寫法是省略 else 部分

//判斷語句 這裡不需要使用 if bool1 == true 來判斷,因為 bool1 本身已經是乙個布林型別的值

bool1 := true

if bool1 else

i,err := teststrtoint("aa")

if err != nil else

switch結構

變數 var1 可以是任何型別,而 val1 和 val2 則可以是同型別的任意值。

型別不被侷限於常量或整數,但必須是相同的型別;或者最終結果為相同型別的表示式。前花括號 switch 語句的第二種形式是不提供任何被判斷的值(實際上預設為判斷是否為 true),

然後在每個 case 分支中進行測試不同的條件。當任一分支的測試結果為 true 時,

該分支的**會被執行。這看起來非常像鏈式的 if-else 語句,但是在測試條件非常多的情況下,提供了可讀性更好的書寫方式。

switch

R語言學習記錄 2

學習如何構造r函式 難度提公升 構造統計分布 避免命名衝突 例如,定義函式f01為引數為a的指數分布的密度函式,定義f02為該指數分布的分布函式,取a 1 5,進行計算,可以看出,三種計算結果基本一致.f01 function x,a f01 5,1 5 f02 function x,a c 3 c...

C語言學習記錄(2)

以上一次學習記錄 中的hello world!為例 include 標頭檔案也叫編譯預處理指令 intmain void 定義主函式 函式結束首先,在每行後的說明文字是注釋內容,後的文字不參與程式的執行,並且,是單行注釋,也就是說其後面的內容是不參與執行的,可以佔據一整行,但是不能跨行。類似作用的符...

GO語言學習

sudo apt get install golang但是用ubuntu的庫安裝有幾個不好的地方 因此建議不要使用ubuntu的庫安裝golang環境 golang社群的安裝指導 wget tar c usr local zxf go1.6.2.linux amd64.tar.gz設定環境變數,修改...