Navigation
阅读进度0%
No headings found.

Go语言核心特性与编程规范

December 19, 2024 (1y ago)

Go
Programming
Package

本章节概述

go的特征:短小精悍

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

多系统的安装教程

多系统的安装教程见这里的教程,https://www.runoob.com/go/go-environment.html

go语言的结构

熟悉go语言的结构,有利于我理解go语言

调用go run xxx.go 到底发生了什么?

可以生成一个 build.sh 脚本,用于在指定位置产生已编译好的 可执文件:

#!/usr/bin/env bash
 
CURRENT_DIR=`pwd`
OLD_GO_PATH="$GOPATH"  #例如: /usr/local/go
OLD_GO_BIN="$GOBIN"    #例如: /usr/local/go/bin
 
export GOPATH="$CURRENT_DIR" 
export GOBIN="$CURRENT_DIR/bin"
 
#指定并整理当前的源码路径
gofmt -w src
 
go install test_hello
 
export GOPATH="$OLD_GO_PATH"
export GOBIN="$OLD_GO_BIN"

关于包问题和自定义包使用自定义包

  • 包与文件名没关系
  • 文件夹名与包名 没关系
  • 同一个文件夹下只能有一个包名,要不然编译报错!

以下就是一个简单的文件结构进行的测试

Test
--helloworld.go
 
myMath
--myMath1.go
--myMath2.go

以下的代码

// helloworld.go
package main
 
import (
"fmt"
"./myMath"
)
 
func main(){
    fmt.Println("Hello World!")
    fmt.Println(mathClass.Add(1,1))
    fmt.Println(mathClass.Sub(1,1))
}
 
// myMath1.go
package mathClass
func Add(x,y int) int {
    return x + y
}
 
// myMath2.go
package mathClass
func Sub(x,y int) int {
    return x - y
}

规范的书写

一个相对比较规范的程序结构

下面是一个比较规范的书写范式

// 当前程序的包名
package main
 
// 导入其他包
import  "fmt"
 
// 常量定义
const PI = 3.14
 
// 全局变量的声明和赋值
var name = "gopher"
 
// 一般类型声明 newType 实际上就是int 类型的别名而已
type newType int
 
// 结构的声明 你可以理解为js中的对象 {}
type gopher struct{}
 
// 接口的声明
type golang interface{}
 
// 由main函数作为程序入口点启动bootStart
func main() {
    Println("Hello World!")
}

如何重命名和调用

// 格式  <PackageName>.<FunctionName> 
package 别名
// 引入自己的包
import "test/controllers"
controllers.xxx()  就能调用里面的方法了
 
// 为fmt起别名为fmt2
import fmt2 "fmt"
fmt2.Pintln()
 
如果使用 . 导入 就可以省略,fmt2.xxx() [不推荐使用]
import . "fmt"
func main (){
    Println("hello,world")
}

private and public

// 大写就是共有的,小写就是私有的
// 使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用。

fmt的函数详解

fmt 函数有很多好玩的地方
1.Print() 函数将参数列表 a 中的各个参数转换为字符串并写入到标准输出中。
非字符串参数之间会添加空格,返回写入的字节数。

2.Printf() 函数将参数列表 a 填写到格式字符串 format 的占位符中。

3.详解 https://www.runoob.com/go/go-basic-syntax.html