Go語言編程(一)介紹

語言特性

Go語言作為一門靜態(tài)類型語言,有很多新的特性
1. 自動垃圾回收
2. 更豐富的內(nèi)置類型,增加了字典map ,數(shù)組切片slice
3. 函數(shù)多返回值
4. 錯誤處理: defer panic recover
5. 匿名函數(shù)和閉包
6. 并發(fā)編程
7. 反射
8. 語言交互性

雖然不太了解這些特性,但是之后應(yīng)該會逐步深入,此處先記下。

第一個程序

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

環(huán)境:debian 8.6 + vscode,安裝golang apt isntall golang

程序注意的地方:
- package 聲明: 表示該代碼所屬的包,go 語言中最基本的分發(fā)單位
- import 導(dǎo)入改程序所依賴的所有包
- main : 主函數(shù)既不能有參數(shù),也不能有返回值

編譯環(huán)境

`go version`

`go version go1.3.3 linux/amd64`

`go build hello.go`

`go run hello.go`

工程管理

開發(fā)一個計算器的工程項目:


- src: 源碼文件夾
- pkg: 包被安裝到這里
- bin: 生成的二進(jìn)制文件

源碼

1. calc.go
//Package main
package main

import "os"
import "fmt"

import "./simplemath"
import "strconv"

//Usage 匿名函數(shù)?
var Usage = func() {
    fmt.Println("USAGE: calc command [arguments] ...")
    fmt.Println("\nThe command are:\n\tadd\tAddition of two values.\n\tsqrt\tSquare")
}

func main() {
    args := os.Args
    if args == nil || len(args) < 2 {
        Usage()
        return
    }

    switch args[1] {
    case "add":
        if len(args) != 4 {
            fmt.Println("Usage: calc add <integer1> <integer2>")
            return
        }
        v1, err1 := strconv.Atoi(args[2])
        v2, err2 := strconv.Atoi(args[3])
        if err1 != nil || err2 != nil {
            fmt.Println("Usage: calc add <integer1> <integer2>")
            return
        }
        ret := simplemath.Add(v1, v2)
        fmt.Println("Result: ", ret)
    default:
        //Usage()
    }
}

2. /simplemath/add.go
//Package simplemath...

package simplemath

// Add a and b
func Add(a int, b int) int {
    return a + b
}

3. /simplemath/add_test.go
//Package simplemath
package simplemath

import "testing"

func TestAdd(t *testing.T) {
    r := Add(1, 2)
    if r != 3 {
        t.Errorf("Add(1,2) failed. Got %d, expecrted 3.\r", r)
    }
}
4. 生成,運行。注:生成的二進(jìn)制文件,不依賴開發(fā)環(huán)境,一次編譯到處運行?

問題追蹤和調(diào)試

go使用盡量簡單的語法,和盡量完善的庫。如果出現(xiàn)了問題,需要調(diào)試,主要兩種跟蹤方法:打印日志和GDB逐步調(diào)試。
  1. 打印日志
    fmt.Printf 和 fmt.Println
  2. GDB 調(diào)試
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 01.{ 換行: Opening Brace Can't Be Placed on a Separate Lin...
    碼農(nóng)不器閱讀 2,482評論 0 14
  • 概述 GDB是一個由GNU開源組織發(fā)布的、UNIX/Linux操作系統(tǒng)下的、基于命令行的、功能強大的程序調(diào)試工具。...
    咕咕鷄閱讀 21,129評論 0 8
  • 第一章五個程序 都很好!但是初學(xué)編程/沒有其他語言基礎(chǔ)的不容易看懂。 記一遍不熟悉的東西: who = strin...
    暗黑破壞球嘿哈閱讀 1,563評論 0 10
  • fmt格式化字符串 格式:%[旗標(biāo)][寬度][.精度][arg索引]動詞旗標(biāo)有以下幾種:+: 對于數(shù)值類型總是輸出...
    皮皮v閱讀 1,229評論 0 3
  • 經(jīng)常被問:讀書有什么用?這很難回答,好像真的沒什么用,不會給你黃金屋和顏如玉,只能給你近視眼和頸椎病,所以才有窮書...
    冰紅茶麻麻閱讀 437評論 0 16

友情鏈接更多精彩內(nèi)容