Go的一些特性 未完待續
1、變數定義的幾種方式 如:
//方式一:普通定義
var a int = 1
fmt.Println("a = ", a)
//方式二:型別推導
var b = 10
fmt.Println("b = ", b)
//方式三:省略var
name := "tom"
fmt.Println("name = ", name)
//多變數宣告
var n1, n2, n3 int
fmt.Println("n1 = ",n1 ,"n2 = ", n2,"n3 = ",n3)
var n4, name1, n5 = 100, "tom", 888
fmt.Println("n4 = ",n4 ,"name1 = ", name1,"n5 = ",n5)
n6, name2, n7 := 100, "tom", 888
fmt.Println("n6 = ",n6 ,"name2 = ", name2,"n7 = ",n7
2、go語言定義的變數或引入的必須使用否則報錯,可以使用忽略保留定義和包引入
如:
package main
import (
"fmt"
_ "bytes" //忽略bytes包
)
func main () {
var num1 int = 10
_ = num1 //忽略變數
fmt.Println("hello world")
}
3、花括號換行報錯
//正確的
func main () {
fmt.Println("hello world")
}
//錯誤的
func main ()
{
fmt.Println("hello world")
}
4、函式可以返回多個值
package main
import (
"fmt"
)
func main () {
var num1 int = 10
var num2 int = 1
//接收兩個值
sum , sub := getSumAndSub(num1, num2)
fmt.Println("sum =",sum, "sub =", sub)
//只接收一個值
sum0 , _ := getSumAndSub(num1, num2)
fmt.Println("sum =",sum0)
}
//返回兩個值
func getSumAndSub(num1 int, num2 int) (int, int) {
sum := num1 + num2
sub := num1 - num2
return sum, sub
}
5、go沒有字元型別(char),一般用byte型別來表示,並且go中的編碼是統一使用utf8,每個字元都會有一個固定的碼值
//go沒有字元型別
var c1 byte = 'a'
var c2 byte = '1'
//輸出的都是碼值
fmt.Println("c1", c1, "c2", c2)
//輸出對應的字元
fmt.Printf("c1=%c c2=%c", c1, c2)
//漢字
var c3 byte = '被'//溢位
fmt.Printf("c3=%c c3碼值=%d", c3, c3)
var c4 int = '被'
fmt.Printf("c4=%c c4碼值=%d", c4, c4)
//輸出碼值對應的字元
var c5 int = 22269
fmt.Printf("c5=%c", c5)
6、字串(string)一旦賦值就不能通過下標來修改
var str2 = "hello"
//str2[0] = 'a' //報錯
7、以字串原生方式輸出
var str string = `每個生命的方式是自然界一種力的方式。
有些人的生命像沉靜的湖,有些像白雲飄蕩的一望無際的天空,
有些像豐腴富饒的平原,有些像斷斷續續的山峰。
我覺得約翰·克利斯朵夫的生命像一條河。
——羅曼.羅蘭《約翰·克利斯朵夫》`
fmt.Println(str)
8、字串+號拼接
//加號放在上一行末尾
str4 := "hello" +
"world"
fmt.Println("str4 = ", str4)
9、與Java、c相比go的不同型別資料之間轉換需要強制轉換(顯示轉換)
var i int32 = 10
var f1 float32 = float32(i)
fmt.Println("f1 = ", f1)
var n1 int32 = 1
var n2 int8
var n3 int8
n2 = int8(n1) + 127 //編譯能過,但結果溢位
//n3 = int(n1) + 128 //n3是int8 報錯
fmt.Println("n1 =", n1, "n2 =", n2," n3 =",n3)
10、string型別與其他基本型別之間的互相轉換
其他基本資料型別轉string
//第一種方式 fmt.Sprintf
str = fmt.Sprintf("%d", num1)
fmt.Printf("str type %T str=%v\n", str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str type %T str=%v\n", str, str)
str = fmt.Sprintf("%t", b)
fmt.Printf("str type %T str=%v\n", str, str)
str = fmt.Sprintf("%c", ch)
fmt.Printf("str type %T str=%v\n", str, str)
//第二種方式 strconv
str = strconv.FormatInt(int64(num1), 10)
fmt.Printf("str type %T str=%v\n", str, str)
string型別轉其他基本資料型別
var str1 string = "true"
var b bool
b, _ = strconv.ParseBool(str1)
fmt.Printf("b type %T b=%v\n", b, b)
var str2 string = "123456"
var n1 int64
n1, _ = strconv.ParseInt(str2, 10, 64)
fmt.Printf("n1 type %T n1=%v\n", n1, n1)
var str3 string = "123dd456"
var n2 int64
n2, _ = strconv.ParseInt(str3, 10, 64)
fmt.Printf("n1 type %T n1=%v\n", n2, n2)
var str4 string = "123"
var n3 int64
n3, _ = strconv.ParseInt(str4, 10, 64)
n5 := int(n3)
fmt.Printf("n3 type %T n1=%v\n", n3, n3)
fmt.Printf("n5 type %T n1=%v\n", n5, n5)
var str5 string = "123.456"
var n4 float64
n4, _ = strconv.ParseFloat(str5, 64)
fmt.Printf("n1 type %T n1=%v\n", n4, n4)
11、包內變數名和函式名以及常量名,首字母大寫為public,其他包可使用;首字母小寫為私有方法,其他包不能使用
var HeroName string = "張飛" //公共 public
var ambitiousName string = "曹操" //私有 private
12、只有i++和i--,並且只能單獨使用不能賦值
//++ -- 只能獨立使用
var i = 8
i++
fmt.Println("i =",i)
i--
fmt.Println("i =",i)
//錯誤使用
++i //錯誤
--i //錯誤
var j int;
j = i++ //錯誤
if i++ > 10 { //錯誤
return
}
13、GOPATH的意義:
環境變數 GOPATH 的值可以是一個目錄的路徑,也可以包含多個目錄路徑,
每個目錄都代表 Go 語言的一個工作區(workspace)。
這些工作區用於放置 Go 語言的原始碼檔案(source file),
也就是以“.a”為副檔名的檔案)和可執行檔案(executable file)。
Go 語言專案在其生命週期內的所有操作
(編碼、依賴管理、構建、測試、安裝等)
基本上都是圍繞著 GOPATH 和工作區進行的。
相關文章
- 排序【未完待續】排序
- 搜尋全家桶(未完待續)
- JAVA面試題(未完待續)Java面試題
- HashMap原始碼分析,未完待續HashMap原始碼
- Runtime 執行時(未完待續)
- Redis的常用命令——未完待續Redis
- 常用揹包dp模板(未完待續)
- git安裝與使用,未完待續... ...Git
- Maven(個人整理)(一,未完待續)Maven
- GDI+學習筆記--未完待續筆記
- 字串匹配演算法【未完待續】字串匹配演算法
- Shell 入門系列: 導航 (未完待續)
- 小程式學習筆記(未完待續)筆記
- 前端學習整理資料(未完待續)前端
- 函式基本定義和使用‘未完待續函式
- Charles日常使用中的問題總結,未完待續……
- 光速上手k8s(2023)(containerd)(未完待續)K8SAI
- 資料結構的練習day2(未完待續)資料結構
- 在docker中做php優化的發現(未完待續)DockerPHP優化
- 單目深度估計中的LOSS構造【未完待續】
- 第一週作業Linux基礎(未完待續,週日繼續)Linux
- Zero shot Learning 論文學習筆記(未完待續)筆記
- 《Katana ZERO(武刃 零)》:嗑藥過量,未完待續
- 大一寒假集訓(13)(14)---vector ,string【未完待續】
- android輸入法機制的學習總結(未完待續)Android
- CSS基礎速刷 - 非佈局樣式(未完待續)CSS
- Elementary OS折騰記錄( 未完待續,一直更新)
- ping(未完待補充)
- Spring在不同的使用中需要匯入的jar包(轉載未完待續)SpringJAR
- 計算機組成原理簡單複習總結--未完待續計算機
- 數字陣列最值,總和,平均,中位數 未完待續陣列
- 還在愁webpack如何配置嗎?不妨來這裡看看(未完待續...)Web
- MySQL:關於ICP特性的說明(未完)MySql
- 從零開始系列-Laravel編寫api服務介面:6.資料庫查詢(未完待續)LaravelAPI資料庫
- 從零開始系列-Laravel編寫api服務介面:7.資料庫新增和更新(未完待續)LaravelAPI資料庫
- Python標準庫(待續)Python
- 學習進度 (待續)
- NSSCTF—Crypyo "第一頁" ԅ(≖‿≖ԅ) (待續……)