Go初體驗 基礎

2021-09-19 09:37:10 字數 1284 閱讀 8034

go的字串有點不一樣。它是utf8字元的乙個序列:當字元為乙個ascii碼時為乙個位元組,其他字元則根據需要占用2-4個位元組。

該做法的好處是:節省了記憶體和硬碟的儲存空間,同時,不需要像其它語言一樣對utf8字符集的文字進行編碼和解碼。

go通過雙引號"和反引號`來構建字串。

雙引號則會對文字進行解析,`則不會。

單個字元可以通過'來建立,乙個單一字元可以用乙個單一的rune型別來表示。

字串支援切片操作,但小心如果字串包含非ascii字元,切片則要小心。因為切片操作是使用對字串的位元組進行索引的。這時可以使用range來代替切片操作:對字串的每乙個字元進行操作。

通常情況下,我們可以把乙個go變數當作他的值來使用。

其中有一些例外:通道、函式、方法、對映、切片都使用了引用,即儲存指標的變數。

go中的指標操作符是: & 和 *

&用於取位址

*用於解引用,即獲取指標指向的值

package main

import (

"fmt"

)func swap1(x, y, p *int)

*p = *x * *y

}func swap2(x, y int)(int, int, int)

return x, y, x*y

}func main()

go的陣列是乙個定長的序列,元素型別相同。通過來構建索引。

構建語法

[length]type

[n]type

type{}

陣列的長度是固定,不可修改的。可以通過len()來獲得陣列的長度,cap()獲得陣列的切片大小(不確定)。

陣列也有切片操作,也可以通過range進行索引訪問。

go的陣列是值傳遞,而切片是引用傳遞,因此效率更高。

建立切片

make(type, length, capacity)

make(type, length)

type{}

type

內建函式make來建立切片,對映和通道。

未完待續

參考

Go初體驗 Mac上安裝Go

筆記 進入配置檔案修改環境變數 vim bashrc編輯goroot,gopath,path export goroot usr local go export path path goroot bin export gopath data www go解釋 goroot表示 go 在你的電腦上的安...

python初體驗(1) 基礎篇

我為什麼學習python 首先我的工作第一語言是c c 物件導向子集 選擇學習python一方面是因為看很多人都說python開發效率高,所以想驗證一下 另一方面,eric s.raymond在文章 如何成為一名黑客 中對python的推薦。還有一方面,python的設計哲學 用一種方法,最好是只有...

Go 初體驗 channel 1 基本用法

channel 分為兩種 1.無緩衝 channel 2.緩衝 channel 無緩衝 channel 的使用必須遵循乙個原則 推送和讀取必須同時存在,否則就發生死鎖 先上 這裡定義了乙個 int 型的通道 c1,然後通過輔助協程並行給 c1 推送 v 就是 i 然後又在主協程讀取。輸出 有緩衝 c...