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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go 数据类型和操作符

發布時間:2024/9/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go 数据类型和操作符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件名&關鍵字&標識符

?? 1. 所有go源碼以 .go結尾

?? 2. 標識符以字母或者下劃線開頭,大小寫敏感:add, Add, _add

?????? _是特殊標識符,用來忽略結果

?? 3. 保留關鍵字

???

?

Go程序基本結構

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

函數聲明和注釋

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

?

常量和變量

常量

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

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

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

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

?

變量

語法:var identifier type

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

值類型和引用類型

1 值類型:變量直接存儲值,內存通常在棧中分配

??? 基本數據類型int、float、bool、string以及數組和struct
2 引用類型:變量存儲的是一個地址,這個地址存儲最終的值。內存通常在堆上分配。通過GC回收。

 指針、slice、map、chan等都是引用類型

變量作用域

在函數內部聲明的變量叫做局部變量,生命周期僅限于函數內部
在函數外部聲明的變量叫做全局變量,生命周期作用于整個包,如果是大寫的,則作用于整個程序。

數據類型和操作符

?1 bool類型,只能存true和false
? ? ? ? ? ?var a bool

? ? ? ? ? ?var a bool = true

? ? ? ? ? ?var a = true

?2 相關操作符 ! && ||

?3?數字類型,主要有int、int8、int16、int32、int64、uint8、uint16、uint32、uint64、float32、float64

?4?類型轉換,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?邏輯操作符: == 、!=、<、<=、>和 >=

  數學操作符:+、-、*、/等等

?6?字符類型:var a byte

var a byte = 'c'

7?字符串類型: var str string

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

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互轉

幾個例子

?

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間的素數 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種所有的水仙花數 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開頭 。
strings.HasSuffix(s string, suffix string) bool:判斷字符串s是否以suffix結尾

// 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中首次出現的位置,如果沒有出現,則返回-1
strings.LastIndex(s string, str string) int:判斷str在s中最后出現的位置,如果沒有出現,則返回-1

strings.Replace(str string, old string, new string, n int):字符串替換
strings.Count(str string, substr string)int:字符串計數
strings.Repeat(str string, count int)string:重復count次str
strings.ToLower(str string)string:轉為小
strings.ToUpper(str string)string:轉為大寫

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中的所有元素鏈接起來
strings.Itoa(i int):把一個整數i轉成字符串
strings.Atoi(str string)(int, error):把一個字符串轉成整數

?

9 時間 和日期類型

9.1. time包
9.2. time.Time類型,用來表示時間
9.3. 獲取當前時間, 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用來表示納秒

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 } 打印當前時間

?

10 指針類型

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

?

轉載于:https://www.cnblogs.com/cedrelaliu/p/7026615.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。