Golang实践录:简单的代码片段

本文列出简单的代码片段及基础知识。

简单说明


  • import的包从src算,如果在子目录,一定要添加子目录路径。如import “a”,则a一定在src目录下。
    同一个目录只能有一个包名。但可以有多个文件(使用同一包名)。
    没有被使用的包,要删除或注释,否则编译不通过。
    包目录不能与系统包名相同,如系统有sync包,不能再创建sync目录。
    除for等外,逗号不是必须的,看个人习惯。
    没有使用的变量,编译不通过。

  • 测试
    文件名带_test的是测试专用,不能用go run来执行。

编码小结

右大括号{在行尾,如在新一行,编译不通过。
一般使用小写+大写方式。
函数:大写 导出,小写 包内(跨文件)可见。
变量:大写导出,小写包内可见。专用名称,可大写或小写。
接口、结构体:大写(一说小+大)。
文件名、包名:小写。

可带可不带分号,习惯性带分号(;)亦可。
大括号在行尾、if/for/没有小括号,但必须添加大括号。
如果引入的包不使用,又不想删除(后面可能会用到),可以注释掉,也可以调用这些包的函数,放到函数中,但不调用这个函数。
格式要求严格,如a为uint16, b为[]bytea = b[0]出错,需要转换a = uint16(b[0])。另外,a = -1也出错,因为是无符号的。

打印:

fmt.Printfln("Hello world");
fmt.Printf("Hello %v\n", "world");

代码片段(用以切换语言时看):


有传入、输出参数
func sqrt(x float64) float64 {
    ret := 1.0
    for i := 0; i < 10; i++ {
        ret = ret - (ret*ret - x) / 2 / ret
    }
    
    return ret
}

"类"
package class

import (
	"fmt"
)

// 空结构体
type SimpleClass struct {
    // nothing
}

// "类"的形式
func (p *SimpleClass) printf() {
	fmt.Printf("%v\n", "hello world");
}

// 大写,包外可见
func SimpleTest() {

    c := SimpleClass{};
    c.printf();
}

主函数文件:
package main

import (
  "class"
)
func main() {
    class.SimpleTest();
}


if bit0 == 0 { // 注释
    return 'I';
} else if bit0 == 1 && bit1 == 0 {
    return 'S';
} else if bit0 == 1 && bit1 == 1 { // 注释
    return 'U';
} else { // 其它
    return 0;
}


打印变量类型:
"reflect"
fmt.Println(reflect.TypeOf(var)) 

组装字符串示例:

    // 要点:补齐字段的用法
    // 年月日时分秒
    return fmt.Sprintf("%.4v%.2v%.2v%.2v%.2v%.2v", 
                       year, month, day, 
                       hour, minute, seconds);

同一程序代码,生成不同文件执行不同函数:

import (
    "fmt"
    "os"
    "path/filepath"
    "strings"
)

func main() {
    filename := filepath.Base(os.Args[0])
    if strings.Contains(filename, "send") {
        send()
    } else if strings.Contains(filename, "recv") {
        recv()
    } else {
        fmt.Println("do nothing")
    }
}

八、小实验

自实现模块A,存入github.com,A使用到第三方库,go get获取A会自动检测第三方库,如无则自动下载。

九、常见错误

main.go:8:5: found packages a (a.go) and main (a1.go) in e:\project\golang\src\hello\a

原因:同一个目录下,有2个包名。
解决:只保留一个包名,如必须有2个,则移到另一目录。

PS:工作中切换语言时,先看几眼本文件,以便于思维的切换。

©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页