go語言學習--基礎篇(2)

一,go的數據類型和操做符數組

      1,布爾類型框架

            go語言中bool 類型只有兩個值:true和false;不像其它語言中0和1 也能夠表示布爾類型,這在go語言中是不容許的,另外定義一個bool 類型,默認值爲falseide

            a. var b bool (默認爲false)函數

            b. var b bool = trueui

            c. var b = truespa

      2, 操做符操作系統

            a. == 等於代碼規範

            b. != 不等於blog

            c. !b 取反操做字符串

           d. && 與運算

           e. || 或運算

           布爾類型格式化輸出佔位符 %t

     3,整數和浮點數類型

           a. int8,int16,int32,int64 (有符號整數類型) 其中數字表示多少位

           b. uint8,uint16,uint32,unit64 (無符號整數類型)

           c. int 和 uint, 和操做系統平臺有關

           d. float32 和float64浮點數

      注意:go 語言是強類型語言,其實int類型,不通字節之間也不能直接轉化,例如: int8類型的變量,不能直接賦值int16

      全部的整數初始化爲0,全部的浮點數初始化爲0.0,布爾類型初始化爲false

      4,複數類型

           a,兩種形式:complex64和complex128

           b,var c complex64 = 5 +10i

           c,內置函數complex(re,im)構造一個複數

          d,萬能輸出佔位符:%v

      5,位操做

          a,與操做:&

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

          b,或操做

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

          c, 異或操做

            1 ^1 = 0;1 |0 =1;0 |1 =1; 0 & 0 =1

      6,位操做符

          a. 左移 <<    1<< 10 = 1024

          b. 右移 >>   1024 >> 10 = 1

      7,操做符

          a. 邏輯操做符, ==,!=,<,<=,>=

          b. 算數操做符, +,-,*,、,%

二,go語言代碼規範

       1,在go 語言中任何一個代碼文件隸屬於一個包

       2,import  關鍵字,引用其餘包:

           import("fmt")

           導入多個包
           import (

                 "fmt」

                「os」

            )

         3,同一個包的函數調用,直接調用便可,要是導入其餘包,須要加上包的名字+點+函數名稱,例如 calc.add,calc 爲報名,add 爲其中的一個函數

         4,包訪問控制規則:

               a.函數名或者變量開頭字母大寫,意味着這個函數或者變量,能夠在其它源碼中導入

               b.函數名或者變量開頭字符小寫,意味着這個函數或者變量,不能夠導出,爲私有屬性

        5,每一個源碼文件能夠含一個init 函數,這個init 函數自動被go運行的框架調用,示例      

package main

import (

     "fmt"
)

func init(){                                  
fmt.Println("init called") } func main() { fmt.Println("main called") #先輸出init called,最後輸出main called }

 

        6. 包的只初始化,不引用,在go 語言,通常狀況下,一個包不引用,是不能夠導入的,不然會編譯出錯,可是也有一種狀況是能夠導入包的,進行初始化,即在包名前加_

        import (

             _"add"

        )

 三,常量

         1. 常量使用const修飾,並且永遠只讀,不能修改

         2. const只能修飾boolean,number(int相關類型,浮點數,complex)和string

         3. const的定義 const identifier [type] = value

         4. 多個值定義  const(

                                    a = 1

                                    b = 2

                                    c = 3

                                  )

         5. iota 字const 中的應用 iota 初始值爲0,之後定義參數,若是附其它值,按順序加1,遇到新的const iota 的值重置     

package main

import (

  "fmt"

)

const(

	a = iota
	b
	c
)

const (

	d = iota
	e
)

func main(){

	fmt.Printf("%d,%d,%d,%d,%d",a,b,c,d,e)
}

輸出爲:0,1,2,0,1

 

           6,在const 賦值中,若是某個變量沒有賦值,那麼他的值默認爲上一個表達式的值

四,go語言中的內置包        

     1.time

func main() {

      now := time.Now()                              #獲取當前時間
      second :=now.Unix()                            #將當前時間轉化成時間戳

}

 

   2, os

     a. 獲取主機名

func main() {

    name,ret := os.Hostname()
    fmt.Printf("%s %v",name.err)
}

    b. 獲取GoPATH

func main(){
        val := os.Getenv("PATH")             #os.Getenv 加變量參數
        fmt.Printf("%s\n",val)

}

 五,字符串

   1,字符串聲明

         a. var b =string

         b. var b = "hello"

         c. var b string = "hello"

   2.  go 語言的引號

       a. 雙引號,「」,能夠包含控制字符

       b. 反引號,··,反引號字符都是原樣輸出

   3. 字符串操做

        a. 長度: len(str)

           示例

func StrOperator() {

      str := "hello world"
      for index,val := range str {

         fmt.Printf("len:%d\n",len(str))
       }
}

        b. 拼接: +,fmt.Sprintf

             str2 :=str + "world"

        c. 分割: string.Split,返回一個數組

str="hello world"
result := strings.Split(str," ")         #已空格分割
fmt.Printf("result"%v\n",result)         #返回結果爲數組

        d. 包含: string.Contains

str="hello world"
result := strings.Contains(str,"he")         
fmt.Printf("result"%v\n",result)         #返回true或者false

        e. 前綴或後綴判斷: strings.HasPrefix,strings.HasSuffix

str = "baidu.com"
if ret := strings.HasPrefix(str4,"http://"); ret == false {
  
      str4 = "http://" + str
  
}

        f. 子串出現的位置: string.Index(),strings.Lastlndex()

        g. join 操做: string.Join(a[]string,Sep string)

六,流控制語句

      1. if 語句

         if conditionl {

             // do something

         } else if  condition2 {

            // do something

         } else {

        }

   2. if  語法糖

        if b:=100;b> 200 {

           // do something   

        }

    3. for  循環

        a      初始化  condition 修改

         for init;condition;modify { }

        b  無限循環

        for  {   }

        for true {   }

        c  for 遍歷字符串,數組,切片

         for  index,val :=range str {

         }

相關文章
相關標籤/搜索