Go(day2)

Go開發

GO1.5之後, 底層都是用go寫的,所以1.5後都需要安裝go編譯器

Go是強類型語,不同類型相加以及賦值是不允許的,所有的整數 初始化爲0,所有浮點數初始爲0.0,布爾類型初始化爲false

  1. 如何一個代碼文件最小單位都是包

  2. 各包直接最好別重名,負責會覆蓋

  3. 只能導入庫文件,不能導入另外一個包的可執行文件,也就是帶有package main 開頭的包

    1. 如果需要導入另外一個包,那這個被導入包的開頭package 可以隨意寫

  4. 如果是同一包裏面的函數,直接調用即可,無需import

    1. 需注意的是: 在運行go run 會報錯, 需要go build 或者go install 後執行編譯後的程序,不會報錯

    2. 不同包中函數,通過包名+點+函數名進行調用

  5. 在開發go的時候,如果寫入無用的代碼(也就是沒有執行,或調用) ,那也會報錯!! (go 做的很好)

    1. 例如:如果import 導入fmt ,但是程序中沒有使用,那就會報錯

  6. 全局只能聲明變量,一個語句是不能寫在全局

  7. 可執行的程序,必須放在mian函數裏面

  8. 包訪問控制權限

    1. 大寫意味着這個函數/變量是可導出

    2. 小寫意味着這個函數/變量是私有的,包外部不能訪問


初始化函數

func init(){
    
}

運行一個go程序的時候,會先執行init函數,運行完畢後,纔會運行main函數

#需注意的是: 當導入包的時候,先執行導入包的init函數,然後執行本程序的init函數

Go基礎

布爾類型  {輸出bool類型是用 :%t 輸出}

  1. var b bool var b bool = true var b = true

  2. 操作符 == !=

  3. 取反操作符: !b

  4. 邏輯操作類型:   (下面的運算結果就是布爾類型 )

    1. ==:

    2. != 

    3. <

    4. <=

    5. >=

  5. && || 操作符

    1. && :與   如果第一個爲假 那後面就不需要運算

    2. || : 或   如果第一個爲真 那後面就不需要運算

  6. 格式化輸出佔位符: %t  輸出布爾類型!!

  7. 算數操作符, +-*/%

數據類型和操作符

整數和浮點數

一個字節是8位

  1. int8、 int16、 int32、 int64

  2. uint8、 uint16、 uint32、 uint64

  3. int 和 uint和操作系統平臺相關

  4. float32 float64浮點類型

  5. 所有整數 初始化爲0所有浮點數初始化爲0.0,布爾類型初始化爲false

複數類型
兩種形式: complex64和complex128
var c complex64 = 5 + 10i
內置函數 complex(re, im) 構造⼀個複數
萬能輸出佔位符: %V

字符串操作:

clipboard.png

位操作符

  1. 與操作: &

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

2. 或操作: |

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 & 0 = 0

3. 異或: ^  (相同的等於0  不同的等於1)

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

4. 左移 <<

1 << 10 = 1024
1 << 20 = 1M
1 << 30 = 1G

5.右移 <<

1024 >> 10 = 1
1024 >> 1 = 512
1024 >> 2 = 256

常量

  1. 常量使用const修飾,代表永遠是隻讀的,不能修改

  2. const 只能修飾booleannumberint相關類型、浮點類型、 complex)和string

  3. const(

    a = 1
    b = 2
    c = 3
    )
#iota 初始化默認爲0,
##默認遞增
const(

a = 1 << iota
b
c
)

變量

var (
a int //0
b string //“”
c bool //false
d int = 8 // 8
e string = “hello” //hello
)

結構體 (struct 就是結構體定義)

struct 就是結構體定義
type User struct {
    name string
    flag uint8
}

init方法和導入包

導入其他包概念,

func init(){}  初始化函數。。當init函數運行完畢。纔會運行mian函數,先執行導入包的init函數。然後執行本程序的init函數


package main

import (
   _ "godream/day2/mysql_deveices"
   "fmt"

)

func main()  {
   fmt.Println("hello")
   Say()
}




條件判斷和循環

for循環的幾種寫法

  • 第一種寫法

    • func TestFor()  {
         for a :=0;a < 10;a++{
            fmt.Println(a)
         }
      }
  • 第二種寫法

    • func TestFor2()  {
         var a int =0
         for a <10{
            fmt.Println(a)
            a++
         }
      }
  • 第三種寫法(循環字符串)

    • func TestForStr()  {
         str :="hello world"
         for index,val :=range str{
            fmt.Printf("index:%d --val:%c \n",index,val)
         }
      }
  • 第四種寫法

    • func TestFor3()  {
         var a int =0
         for true{
            fmt.Println(a)
            a++
         }
      }

if判斷的幾種寫法

  • 第一種

    • a :=Test()
      if a > 10 {
         fmt.Printf("good!%d\n",a)
      }
  • 第二種

    • if a:=Test(); a>10{
         fmt.Printf("高級!%d\n",a)
      }

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章