go學習筆記(一)
阿新 • • 發佈:2020-12-29
1.變數需要宣告再使用
2.同一作用域不支援重複宣告
3.變數聲明後必須使用
4.可以批量宣告變數
//var 變數名 變數型別
var s string
//批量宣告
var (
a string
b int
c bool
...
)
5.可以宣告變數同時賦值(可型別推導,不用宣告型別)
var s1 string = “hahaha”
var s2 = "hahaha" //型別推導
s3 := "hahaha" //簡短變數宣告,僅可用於函式內中
6.匿名變數:多重賦值時,忽略某個值,用下劃線 _
表示。 不佔用名稱空間-不分配記憶體-無重複宣告-不產生不使用報錯的情況
package main
import "fmt"
func qqq( )(int,string){
return 1,"qqq"
}
func main() {
x,_:=qqq()
y,_:=qqq()
fmt.Println("x=",x)
fmt.Println("y=",y)
}
-------
x= 1
y= 1
注意
1.函式外語句必須以關鍵字開始
常量
const 常量名 = 常量值
1.在程式執行期間不會改變 2.定義了之後不能修改
批量宣告
//某一行沒賦值,表明同上一行
const(
a = 1
b
c
)
iota 常量計數器
1.const出現時被重置未0 2.每新增一行常量宣告,iota增加1 (類似列舉)
const(
a = iota //0
b //1
c //2
)
基本資料型別
整型
分為有符號(int)和無符號(uint)
int8 // 0 ~ 255,byte型
int16 // 0 ~ 65535
int32 //
int64 //
int8 // -128 ~ 127
int16 // -32768 ~ 32767 ,對應C語言中的 short 型
int32 // -2147483648 ~ 2147483647 , 對應C語言中的 long 型
int64 // -9223372036854775808 ~ 9223372036854775807
特殊整型
int 和 uint 在不同平臺時會有區別
uintptr 無符號整型,用於存放一個指標
進位制轉換
func main(){
var a = 100
fmt.Printf("%b\n",a) //二進位制
fmt.Printf("%d\n",a) //
fmt.Printf("%o\n",a) //八進位制
fmt.Printf("%x\n",a) //十六進位制
}
浮點型
支援 float32 和 float64 兩種,預設go語言中小數都是float64.
複數
complex64和complex128 複數有實部和虛部,complex64的實部和虛部為32位,complex128的實部和虛部為64位.
布林值
bool,true(真)
和false(假)
注意: 1.布林型別值預設false 2.不允許整型強制轉換成布林型 3.無法參與數值運算,也無法轉換
字串
go中雙引號包裹字串,單引號包裹字元
轉義符 \r \n \t 等等
多行字串,使用反引號
a := `第一行
第二行
第三行
`
fmt.Println(a)
字串常用操作
len(str) //求長度
+ 或 fmt.Sprintf //拼接
strings.Split //分割
strings.contains //判斷包含
strings.HasPrefix,strings.HasSuffix //前後綴判斷
strings.Index(),strings.LastIndex() //定位
strings.Join(a[]string, sep string) //join操作
Go 語言的字元有以下兩種:
-
uint8
型別,或者叫 byte 型,代表了ASCII碼
的一個字元。 -
rune
型別,代表一個UTF-8字元
。
修改字串
要先將其轉換成[]rune
或[]byte
,完成後再轉換為string
func main(){
A := "asd"
byte1 := []byte(A)
byte1[0] = 'a'
fmt.Println(string(byte1))
B := "好好學習天天向上"
rune1 := []rune(B)
rune1[0] = '學'
fmt.Println(string(rune1))
}
型別轉換
沒有隱式型別轉換,僅支援強制型別轉換和型別斷言
強制型別轉換
T(表示式)
注意:指標的強制型別轉換需要用到unsafe包中的函式實現
型別斷言
package main
import "fmt"
func main() {
var a interface{} =10
switch a.(type){
case int:
fmt.Println("int")
case float32:
fmt.Println("string")
}
}