一、輸入Hello World
go語言中,想要輸出內(nèi)容到控制臺,package必須是main,包括方法名也必須是main,
go語言輸出的語法是 fmt 庫。
package main
import "fmt"
func main() {
// go語言中 輸出內(nèi)容 使用的庫是 fmt庫
fmt.Println("Hello world")
}
二、變量的基本類型
Go語言的基本類型有:
-
boolean:布爾類型 true / false
-
string :字符串類型
-
數(shù)值型:
- int8:有符號8位整型(-128到127)長度
- int16:有符號16位整型(-32768到32767)長度
- int32:有符號32位整型(-2147483648到2147483647)長度
- int64:有符號64位整型(-9223372036854775808到9223372036854775807)長度
- uint8:無符號8位整型(0到255)
- uint16:無符號16位整型(0到65535)
- uint32:無符號32位整型(0到4294967295)
- uint64:無符號64位整型(0到18446744073709551615)
-
浮點(diǎn)型:
- float32:32位浮點(diǎn)型數(shù)字
- float64:64位浮點(diǎn)型數(shù)字
-
byte:等同于 uint8
主要適用于存儲字符,存儲的是字符的 ASCII碼
-
rune:等同于 int32
也是用于存儲字符的,存儲的是字符的 ASCII碼,但是比byte長度大,比如中文使用byte可能會導(dǎo)致存儲不下,這個時(shí)候可以使用rune類型
當(dāng)一個變量被聲明之后,系統(tǒng)自動賦予它該類型的零值:int 為 0,float 為 0.0,bool 為 false,string 為空字符串,指針為 nil 等。所有的內(nèi)存在 Go 中都是經(jīng)過初始化的。
package main
import "fmt"
/*
*
go語言中基本數(shù)據(jù)類型分為:
bool、字符和string、數(shù)值類型(整數(shù):int、浮點(diǎn)數(shù): float、byte字節(jié) 其實(shí)也是int、rune類型其實(shí)也是 int )
*/
func main() {
// 整數(shù)
var number1 int8
var number2 int16
var number3 int32
var number4 int64
var number5 uint8
var number6 uint16
var number7 uint32
var number8 uint64
//這個int是個 動態(tài)類型 如果操作類型是 64 那么這里就是 int64 如果操作系統(tǒng)是 32 那么就是 int32
//同意的道理 uint 也是
var number9 int
//浮點(diǎn)數(shù)
var number10 float32
var number11 float64
fmt.Println(number1)
fmt.Println(number2)
fmt.Println(number3)
fmt.Println(number4)
fmt.Println(number5)
fmt.Println(number6)
fmt.Println(number7)
fmt.Println(number8)
fmt.Println(number9)
fmt.Println(number10)
fmt.Println(number11)
// -------------------- byte 類型 就是 uint8
// 主要適用于存儲字符,存儲的是字符的 ASCII碼
var number12 byte
number12 = 'a'
fmt.Println(number12)
// -------------------- rune 類型 就是 int32
// 也是用戶存儲字符的但是比byte長度大,比如中文使用byte可能會導(dǎo)致存儲不下,這個時(shí)候可以使用rune類型
var number13 rune
number13 = '釀'
fmt.Println(number13)
// ------------------------------ 字符串類型
var name string
name = "這是一個字符串類型"
fmt.Println(name)
}
三、定義變量
Go語言中可以不指定變量的類型,變量的類型可以讓編譯器來自動決定類型。
1.函數(shù)內(nèi)變量的定義
go語言中定義語法的格式是,
var修飾,變量的名稱在類型的前面,和java不同。
package main
import "fmt"
// go語言中 聲明方法 使用 func
func main() {
// 在 go語言中 聲明 變量用 var
// 名字在前面 類型在后面
// 在 go語言中 如果聲明了變量 沒有給賦值的話 默認(rèn)的值 就是 空串和0
// 比如在 java中 如果不給值 那么就是 null go語言中 都是有默認(rèn)值的
// go語言中 如果定義了變量 不使用的話 會報(bào)錯
var name1 string
var age1 int
fmt.Println("當(dāng)前人的名稱是", name1, "當(dāng)前人的年齡是", age1)
// 定義變量 并且給變量 賦值
var name string
var age int
name = "zhangsan"
age = 18
//重新賦值
age = 19
// 直接聲明變量 然后給 變量賦值
var sex = 1
fmt.Println("當(dāng)前人的名字叫 ", name, "他的年齡是", age, "性別是", sex)
// 第二種定義變量的格式
var name2, age2, sex2, flage2 = "zhangsan", 18, 1, true
//對變量 重新賦值
name2 = "李四"
fmt.Println("第二種定義變量的名稱是:", name2, "年齡是:", age2, "性別是:", sex2, "狀態(tài)是:", flage2)
// 第三種定義變量的格式
name3 := "wangwu"
age3 := 20
//對變量重新賦值
name3 = "趙六"
fmt.Println("第三種定義變量的名稱是:", name3, "年齡是:", age3)
//連續(xù)對變量進(jìn)行定義
name4, age4, sex4 := "李七", 21, 1
fmt.Println("第四種定義變量的名稱是:"+name4, age4, sex4)
// ---------------------------------------
}
2.全局變量的定義
package main
import "fmt"
// 定義全局變量 任何一個函數(shù)里面都能使用
// 第一種寫法
var name5 = "libai"
var age5 = 100
// 第二種寫法
var (
name6 = "chengyaojin"
age6 = 100
)
// go語言中 聲明方法 使用 func
func main() {
fmt.Println(name5, age5)
fmt.Println(name6, age6)
}
四、定義常量
常量一旦被定義,不能被修改。
package main
import "fmt"
func main() {
/**
1.常量類型只能定義 bool、數(shù)值類型(整數(shù),浮點(diǎn)數(shù),復(fù)數(shù))、字符串
2.變量定義了不使用會報(bào)錯,常量定義了可以不使用不報(bào)錯
3.常量,定義的時(shí)候就指定值,不能修改
*/
// 顯式定義常量值: 確定常量的類型
const success1 int = 200
// 隱式定義常量
const success2 = 200
// 常量定義 第一種方式
const (
ERROR1 = 1
ERROR2 = 2
ERROR3 = 3
)
// 第二種方式
const ERROR4 = 4
const ERROR5 = 5
// 第三種方式
// 如果定義常量時(shí) 沒有給常量定義值 那么這個常量的值 將會使用 上個常量的值
const (
ERROR6 = 6
ERROR61
ERROR7 = 7
ERROR71
)
const (
code1 = "success"
code2 = true
code3 = 1
)
fmt.Println(ERROR1, ERROR2, ERROR3)
//常量 只能被初始化一次 再次初始化的話 編譯報(bào)錯
//ERROR4 = 10
fmt.Println(ERROR4, ERROR5)
fmt.Println(ERROR6, ERROR61, ERROR7, ERROR71)
}
4.1常量 iota 的使用
假如我們針對用戶表中,用戶狀態(tài),需要用一個枚舉類來表示他的狀態(tài),那么就go語言中,如何定義枚舉呢?文章來源:http://www.zghlxwxcb.cn/news/detail-700699.html
package main
import "fmt"
func main() {
/**
1.iota是一個自增的數(shù)字類型
2.如果中斷了iota 那么必須 顯式的恢復(fù),后續(xù)會繼續(xù)遞增
3.每次出現(xiàn)const的時(shí)候,iota的初始化都是 0
*/
// 在go語言中對狀態(tài)進(jìn)行枚舉表示
// 未使用:0
// 正常: 1
// 已封禁:2
// 賬號異常:3
// 停用:4
const (
NOTUSE = iota
NORMAL
PROHIBITED
ABNORMAL
DEACTIVATE
)
const (
state = iota
state1
state2 = "未使用"
state3
state4 = iota
)
// 假如我們的錯誤碼 從 1000開始
const (
ERROR = 1000 + iota
ERROR1
ERROR2
ERROR3
ERROR4
)
fmt.Println(NOTUSE, NORMAL, PROHIBITED, ABNORMAL, DEACTIVATE)
fmt.Println(state, state1, state2, state3, state4)
fmt.Println(ERROR, ERROR1, ERROR2, ERROR3, ERROR4)
}
五、匿名變量
上面我們說過了,在go中如果變量不被使用的話,那么編譯會報(bào)錯。但是確實(shí)有些場景我們用不到這個變量。這個怎么處理?
使用匿名變量來解決。文章來源地址http://www.zghlxwxcb.cn/news/detail-700699.html
package main
import "fmt"
// 定義一個函數(shù) 返回兩個返回值
// 當(dāng)前函數(shù) 返回兩個返回值 類型是 int 和 bool
func anonymous() (int, bool) {
return 0, true
}
func main() {
//定義匿名變量 用 "_" 來表示 匿名變量
var _ int
//將第一個返回值用 匿名變量來接口
_, ok := anonymous()
if ok {
fmt.Println("方法返回的是true")
}
}
六、數(shù)據(jù)類型的轉(zhuǎn)換
package main
import (
"fmt"
strconv "strconv"
)
/*
*
基本數(shù)據(jù)類型的轉(zhuǎn)換
1.數(shù)值之間相互轉(zhuǎn)換
1.int、float、bool 轉(zhuǎn)string
2.string 轉(zhuǎn) int、float、bool
*/
func main() {
var age int8 = 12
//將age轉(zhuǎn)成 uint8
var age1 = uint8(age)
//將age轉(zhuǎn)成 int64
age2 := int64(age)
fmt.Println(age1)
fmt.Println(age2)
// -------------------------------- int轉(zhuǎn)成 float
var number = float64(age)
fmt.Println(number)
//----------------------------------- int float 轉(zhuǎn)字符串
// Itoa 函數(shù)必須轉(zhuǎn)成 int類型
var number1string string
number1 := int(age)
number1string = strconv.Itoa(number1)
fmt.Println("這是字符串類型:" + number1string)
var numberFloatString string
var numberFloat float64
numberFloat = 266.141569
//轉(zhuǎn)成string
//第1個參數(shù)是 要轉(zhuǎn)換的類型
//第2個參數(shù)是 要轉(zhuǎn)換類型顯示成什么樣 具體format格式 可以點(diǎn)進(jìn)去源碼看
//第3個參數(shù) 就寫成 -1 就好了
//第4個參數(shù) 就寫成 64就好了
numberFloatString = strconv.FormatFloat(numberFloat, 'f', -1, 64)
fmt.Println("float64轉(zhuǎn)成string" + numberFloatString)
//----------------------------------- bool 轉(zhuǎn)字符串
var flage = true
var flageString string
flageString = strconv.FormatBool(flage)
fmt.Println("將bool類型轉(zhuǎn)成string類型:" + flageString)
//-------------------------------------------------------- 字符串轉(zhuǎn)int float bool
// 1.string 轉(zhuǎn) int
var number11string = "100"
var number11 int
number11, err := strconv.Atoi(number11string)
if err != nil {
return
}
fmt.Println("string轉(zhuǎn)成int類型", number11)
// 2.string 轉(zhuǎn) float
var floatstring = "3.14156"
var float1 float64
//第2個參數(shù) 就寫成64
float1, err = strconv.ParseFloat(floatstring, 64)
if err != nil {
return
}
fmt.Println("string類型轉(zhuǎn)成float類型", float1)
//將string轉(zhuǎn)成bool
var bolstring = "false"
var bool1 bool
bool1, err = strconv.ParseBool(bolstring)
if err != nil {
return
}
fmt.Println("string類型轉(zhuǎn)成bool類型", bool1)
}
到了這里,關(guān)于二、GoLang輸出HelloWorld、基本數(shù)據(jù)類型、變量常量定義、基本類型轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!