技術棧:golang的技術特性和差別

本文屬於Golang學習之旅的一部分,更多文章可到Golang中可見。python

本文只要講講Golang和其餘語言的,差別性,讓你能夠在其餘中,能夠快速切換到Golang中。
Golang吸取了大量語言的特性,有pythone的簡單開發,也解決了不少問題,至於爲何選擇使用Golang,只要的PHP的侷限性太大,JAVA過重。Pythone作數據分析,本身的能力不行。
Docker是K8s,K3s都是又golang編寫的,搞很差之後能夠往架構的方面發展。golang

咱們先看一下的代碼編程

package main //包,代表代碼所在的模塊

import (
    "fmt"
    "os"
) //引入代碼依賴包

//功能實現
func main() {
    if len(os.Args) > 0 {
        fmt.Println("Hello World",os.Args[0])
    }
    os.Exit(-1)
}

能夠見的Golang的一個基本組成結構。
須要一個packageimport和其餘語言沒有多大區別,還須要一個主運用程序函數func main架構

咱們只須要注意
1.必須是main包:package main
2.必須是main方法:func main()
3.文件名不必定是main.go 不少教程都這麼寫致使不少人覺得這個是必要的入口文件編程語言

退出返回值
與其餘主要的編程語言的差別
Go中mian函數不支持任何返回值
經過os.Exit來返回狀態函數

獲取命令行參數
與其餘主要的編程語言的差別
mian 函數不支持傳入參數 好比func main(arg [] string)
在程序中直接經過os.Args獲取命令行參數學習

因爲爲了方便一些代碼都用Test的方式來實現。
編寫測試程序
1.源碼文件以_test結尾:xxx_test.go
2.測試方法名以Test開頭:func TestXXX(t *testing.T) {...}測試

路徑爲 src/ch2/fibui

package fib

import (
    "testing"
)

func TestFibList(t *testing.T) {
    var (
        a int = 1
        b int = 1
    )
    t.Log(a)
    for i := 0; i < 5; i++ {
        t.Log(" ", b)
        tmp := a
        a = b
        b = a + tmp
    }
}

func TestExchange(t *testing.T) {
    a := 1
    b := 2
    a, b = b, a
    t.Log(a, b)
}

這裏注意的是
= 是賦值, := 是聲明變量並賦值。命令行

// = 使用必須使用先var聲明例如:
var a
a=100
//或
var b = 100
//或
var c int = 100

// := 是聲明並賦值,而且系統自動推斷類型,不須要var關鍵字
d := 100

變量賦值
與其餘主要的編程語言
賦值能夠進行自動類型推斷
在一個賦值語句中能夠對多個變量進行同時賦值

常亮定義
與其餘主要的編程語言
快速設置連續值
const (

Monday = iota + 1
Tuesday
Wednesday

)

const (
Open = 1 << iota
Close
Pending
)

數據類型有以下

bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte
run3
float32 float64
complex64 complex128

Golang的類型轉換

package type_test

import "testing"

type MyInt int64

func TestImplicit(t *testing.T) {
    var a int32 = 1
    var b int64
    b = int64(a)
    var c MyInt
    c = MyInt(b) //go比較嚴格別名也是不支持
    t.Log(a, b, c)
}

/*
指針類型

不支持指針運算
string時值類型,其默認的初始化值爲空字符串,而不是 nil
*/

func TestPoint(t *testing.T) {
    a := 1
    aPtr := &a
    t.Log(a, aPtr)
}
相關文章
相關標籤/搜索