Go(day2)

Go開發html

GO1.5以後, 底層都是用go寫的,因此1.5後都須要安裝go編譯器python

Go是強類型語,不一樣類型相加以及賦值是不容許的,全部的整數 初始化爲0,全部浮點數初始爲0.0,布爾類型初始化爲false
mysql

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

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

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

    1. 若是須要導入另一個包,那這個被導入包的開頭package 能夠隨意寫函數

  4. 若是是同一包裏面的函數,直接調用便可,無需importui

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

    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. int八、 int1六、 int3二、 int64

  2. uint八、 uint1六、 uint3二、 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)
      }
本站公眾號
   歡迎關注本站公眾號,獲取更多信息