日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

go 数据类型和操作符

發(fā)布時(shí)間:2024/9/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go 数据类型和操作符 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文件名&關(guān)鍵字&標(biāo)識(shí)符

?? 1. 所有g(shù)o源碼以 .go結(jié)尾

?? 2. 標(biāo)識(shí)符以字母或者下劃線開(kāi)頭,大小寫(xiě)敏感:add, Add, _add

?????? _是特殊標(biāo)識(shí)符,用來(lái)忽略結(jié)果

?? 3. 保留關(guān)鍵字

???

?

Go程序基本結(jié)構(gòu)

package main import “fmt” func main() {fmt.Println(“hello, world”) }//1. 任何一個(gè)代碼文件隸屬于一個(gè)包 //2. import 關(guān)鍵字,引用其他包 //3. golang可執(zhí)行程序,package main,并且有且只有一個(gè)main入口函數(shù) //4. 包中函數(shù)調(diào)用:a. 同一個(gè)包中函數(shù),直接調(diào)用b. 不同包中函數(shù),通過(guò) 包名.函數(shù)名 進(jìn)行調(diào)用 //5. 包訪問(wèn)控制規(guī)則 大寫(xiě)意味著這個(gè)函數(shù)/變量是可導(dǎo)出的小寫(xiě)意味著這個(gè)函數(shù)/變量是私有的,包外部不能訪問(wèn)

函數(shù)聲明和注釋

1. 函數(shù)聲明: func?? 函數(shù)名字 (參數(shù)列表) (返回值列表){}
func add() {}
func add(a int , b int) int {}
func add(a int , b int) (int, int) {}
2. 注釋,兩種注釋,單行注釋: // 和多行注釋? /* */

?

常量和變量

常量

1. 常量使用const 修飾,代表永遠(yuǎn)是只讀的,不能修改
2. const 只能修飾boolean,number(int相關(guān)類(lèi)型、浮點(diǎn)類(lèi)型、complex)和string
3. 語(yǔ)法:const identifier [type] = value,其中type可以省略?

const b string = "hello world" const b = "helloworld" const a = 10 const res = getValue() //錯(cuò)誤示例

const(
a = 0
b = 1
c = 2
)

const(
 a = iota
b //1
c //2
)

?

變量

語(yǔ)法:var identifier type

var (
a int??????????? //默認(rèn)為0
b string????? //默認(rèn)為””
c bool??????? //默認(rèn)為false
d = 8
e = “hello world”
)

值類(lèi)型和引用類(lèi)型

1 值類(lèi)型:變量直接存儲(chǔ)值,內(nèi)存通常在棧中分配

??? 基本數(shù)據(jù)類(lèi)型int、float、bool、string以及數(shù)組和struct
2 引用類(lèi)型:變量存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。內(nèi)存通常在堆上分配。通過(guò)GC回收。

 指針、slice、map、chan等都是引用類(lèi)型

變量作用域

在函數(shù)內(nèi)部聲明的變量叫做局部變量,生命周期僅限于函數(shù)內(nèi)部
在函數(shù)外部聲明的變量叫做全局變量,生命周期作用于整個(gè)包,如果是大寫(xiě)的,則作用于整個(gè)程序。

數(shù)據(jù)類(lèi)型和操作符

?1 bool類(lèi)型,只能存true和false
? ? ? ? ? ?var a bool

? ? ? ? ? ?var a bool = true

? ? ? ? ? ?var a = true

?2 相關(guān)操作符 ! && ||

?3?數(shù)字類(lèi)型,主要有int、int8、int16、int32、int64、uint8、uint16、uint32、uint64、float32、float64

?4?類(lèi)型轉(zhuǎn)換,type(variable),比如:var a int=8; ?var b int32=int32(a)

?

package main func main() {var a intvar b int32a = 15b = a + a // compiler error
b = int32(a+a)b
= b + 5 // ok: 5 is a constant }

?5?邏輯操作符: == 、!=、<、<=、>和 >=

  數(shù)學(xué)操作符:+、-、*、/等等

?6?字符類(lèi)型:var a byte

var a byte = 'c'

7?字符串類(lèi)型: var str string

8 字符串表示兩種方式: 1)雙引號(hào) 2)`` (反引號(hào))

var str2 = `hello \n \n \n this is a test string This is a test string too·` 1 #string到int 2 int,err:=strconv.Atoi(string) 3 #string到int64 4 int64, err := strconv.ParseInt(string, 10, 64) 5 #int到string 6 string:=strconv.Itoa(int) 7 #int64到string 8 string:=strconv.FormatInt(int64,10) string, int, int64互轉(zhuǎn)

幾個(gè)例子

?

1 // main 2 package main 3 4 import ( 5 "fmt" 6 ) 7 8 func is_prime(num int) bool { 9 if num == 1 { 10 return false 11 } 12 for i := 2; i < num; i++ { 13 if num%i == 0 { 14 return false 15 } 16 } 17 return true 18 } 19 20 func main() { 21 22 var count int 23 for i := 100; i <= 200; i++ { 24 if is_prime(i) { 25 count++ 26 fmt.Println(i) 27 } 28 } 29 fmt.Println("totally prime number: ", count) 30 } 100-200間的素?cái)?shù) 1 // main 2 package main 3 4 import ( 5 "fmt" 6 "strconv" 7 ) 8 9 func is_narcissistic(num int) bool { 10 num_str := strconv.Itoa(num) 11 length := len(num_str) 12 var sum int 13 for i := 0; i < length; i++ { 14 tmp, _ := strconv.Atoi(num_str[i : i+1]) 15 //fmt.Println(tmp) 16 sum += tmp * tmp * tmp 17 18 } 19 20 if sum == num { 21 return true 22 } 23 return false 24 } 25 26 func main() { 27 var count int 28 for i := 100; i < 1000; i++ { 29 if is_narcissistic(i) { 30 count++ 31 fmt.Println(i) 32 } 33 } 34 fmt.Println("total number: ", count) 35 } 100-999種所有的水仙花數(shù) 1 // main 2 package main 3 4 import ( 5 "fmt" 6 ) 7 8 func factorial(num int) int { 9 var result = 1 10 for i := 1; i <= num; i++ { 11 result *= i 12 } 13 return result 14 } 15 16 func factorial_sum(num int) int { 17 var sum int 18 for i := 1; i <= num; i++ { 19 sum += factorial(i) 20 } 21 return sum 22 } 23 24 func main() { 25 res := factorial_sum(3) 26 fmt.Println(res) 27 } n的階乘之和

8.1 ? strings和strconv使用

strings.HasPrefix(s string, prefix string) bool:判斷字符串s是否以prefix開(kāi)頭 。
strings.HasSuffix(s string, suffix string) bool:判斷字符串s是否以suffix結(jié)尾

// main package mainimport ("fmt""strings" )func urlProcess(url string) string {result := strings.HasPrefix(url, "http://")if !result {url = fmt.Sprintf("http://%s", url)}return url }func pathProcess(path string) string {result := strings.HasSuffix(path, "/")if !result {path = fmt.Sprintf("%s/", path)}return path }func main() {var (url stringpath string)fmt.Scanf("%s%s", &url, &path)fmt.Println(urlProcess(url))fmt.Println(pathProcess(path)) } 判斷前綴后綴

strings.Index(s string, str string) int:判斷str在s中首次出現(xiàn)的位置,如果沒(méi)有出現(xiàn),則返回-1
strings.LastIndex(s string, str string) int:判斷str在s中最后出現(xiàn)的位置,如果沒(méi)有出現(xiàn),則返回-1

strings.Replace(str string, old string, new string, n int):字符串替換
strings.Count(str string, substr string)int:字符串計(jì)數(shù)
strings.Repeat(str string, count int)string:重復(fù)count次str
strings.ToLower(str string)string:轉(zhuǎn)為小
strings.ToUpper(str string)string:轉(zhuǎn)為大寫(xiě)

strings.TrimSpace(str string):去掉字符串首尾空白字符
strings.Trim(str string, cut string):去掉字符串首尾cut字符
strings.TrimLeft(str string, cut string):去掉字符串首cut字符
strings.TrimRight(str string, cut string):去掉字符串首cut字符
strings.Field(str string):返回str空格分隔的所有子串的slice
strings.Split(str string, split string):返回str split分隔的所有子串的slice

strings.Join(s1 []string, sep string):用sep把s1中的所有元素鏈接起來(lái)
strings.Itoa(i int):把一個(gè)整數(shù)i轉(zhuǎn)成字符串
strings.Atoi(str string)(int, error):把一個(gè)字符串轉(zhuǎn)成整數(shù)

?

9 時(shí)間 和日期類(lèi)型

9.1. time包
9.2. time.Time類(lèi)型,用來(lái)表示時(shí)間
9.3. 獲取當(dāng)前時(shí)間, now := time.Now()
9.4. time.Now().Day(),time.Now().Minute(),time.Now().Month(),time.Now().Year()
9.5. 格式化,fmt.Printf(“%02d/%02d%02d %02d:%02d:%02d”, now.Year()…)

9.6?. time.Duration用來(lái)表示納秒

9.7. 一些常量:
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)

9.8. 格式化:
now := time.Now()
fmt.Println(now.Format(“02/1/2006 15:04”))
fmt.Println(now.Format(“2006/1/02 15:04”))
fmt.Println(now.Format(“2006/1/02”))

1 // main 2 package main 3 4 import ( 5 "fmt" 6 "time" 7 ) 8 9 func main() { 10 now := time.Now() 11 fmt.Println(now.Format("2006/01/02 15:04:00")) 12 } 打印當(dāng)前時(shí)間

?

10 指針類(lèi)型

10.1. 普通類(lèi)型,變量存的就是值,也叫值類(lèi)型
10.2. 獲取變量的地址,用&,比如: var a int, 獲取a的地址:&a
10.3. 指針類(lèi)型,變量存的是一個(gè)地址,這個(gè)地址存的才是值
10.4. 獲取指針類(lèi)型所指向的值,使用:*,比如:var *p int, 使用*p獲取p指向的值

?

轉(zhuǎn)載于:https://www.cnblogs.com/cedrelaliu/p/7026615.html

總結(jié)

以上是生活随笔為你收集整理的go 数据类型和操作符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。