博客
关于我
【Go基础】03 包 标准库
阅读量:177 次
发布时间:2019-02-28

本文共 2451 字,大约阅读时间需要 8 分钟。

Go语言学习资料

包的使用

1.1 工作空间

在开始编写代码之前,首先需要为项目创建一个合适的工作空间。Go语言的包管理和项目结构与其他语言有所不同,需要理解其工作原理。

1.2 源文件

源文件是项目开发的核心文件,通常位于项目根目录下。Go语言的源文件扩展名为.go

1.3 包结构

1.3.1 包结构规则

包名需遵循以下命名规则:

  • 使用简洁、清晰且全小写的名字,便于频繁输入。
  • 包名与代码所在文件夹同名。

包中成员的访问权限由名称大小写决定:

  • Public:首字母大写,可被包外访问。
  • Internal:首字母小写,仅包内成员可访问。

代码示例:

// counters包提供告警计数器功能package counters// alterCounter是一个未公开的类型// 用于保存告警计数器type alterCounter int// 小写字母开头,包外不可见type AlterCounter int// 大写字母开头,包外可见

解决方案:

  • 使用工厂函数创建一个未公开的alterCounter类型的值。

1.3.2 java与Go的区别

  • 在Java中,任何一个.java文件都可以有一个唯一的main方法作为启动函数。
  • 在Go中,任何一个包中都可以有一个唯一的带有main方法的文件。

1.3.3 导入包

Go模块导入示例:

import (    "log"    "runtime")

包替换命令:

replace "liwenzhou.com/q1mi/p2" => "../p2"

日志记录

2.1 log包结构

log包提供一个多routine安全的日志记录器。

2.2 日志输出

2.2.1 格式及标志符

日志格式化设置:

func init() {    log.SetPrefix("TRACE: ")    log.SetFlags(log.Ldate | log.Lmicroseconds | log.Llongfile)}

日志方法示例:

log.Println("message")  // 默认格式:时间戳 文件名:行号 消息log.Fatalln("fatal message")  // 在Println后调用os.Exit(1)log.Panicln("panic message")  // 在Println后调用panic()

日志输出示例:

TRACE: 2021/04/19 18:55:55.188845 D:/GO/src/code.practise/test_log/test_log1.go:15: messageTRACE: 2021/04/19 18:55:55.297291 D:/GO/src/code.practise/test_log/test_log1.go:18: fatal message

日志方法定义:

const (    Ldate        = 1 << iota    Ltime    Lmicroseconds    Llongfile    Lshortfile    LUTC    Lmsgprefix    LstdFlags = Ldate | Ltime)

自定义日志记录器:

Trace = log.New(ioutil.Discard, "TRACE: ", log.Ldate|log.Ltime|log.Lshortfile)Info = log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)Warning = log.New(os.Stdout, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile)Error = log.New(io.MultiWriter(file, os.Stderr), "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile)

日志方法列表:

func (l *Logger) Fatal(v ...interface)func (l *Logger) Fatalf(format string, v ...interface)func (l *Logger) Fatalln(v ...interface)func (l *Logger) Flags() intfunc (l *Logger) Output(calldepth int, s string) errorfunc (l *Logger) Panic(v ...interface)func (l *Logger) Panicf(format string, v ...interface)func (l *Logger) Panicln(v ...interface)func (l *Logger) Prefix() stringfunc (l *Logger) Print(v ...interface)func (l *Logger) Printf(format string, v ...interface)func (l *Logger) Println(v ...interface)func (l *Logger) SetFlags(flag int)func (l *Logger) SetPrefix(prefix string)

数据编码

3.1 json

3.1.1 json到Go

处理方法:

  • 将JSON文档转换为string,然后转换为[]byte
  • 使用json.Unmarshal反序列化到一个map中。

3.1.2 Go到json

处理方法:

  • 使用json.MarshalIndent进行编码。
  • 将Go语言的map或结构体类型值转换为易读的JSON文档。

3.2 xml

[此部分内容待补充]

转载地址:http://jbxj.baihongyu.com/

你可能感兴趣的文章
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
Nginx Location配置总结
查看>>
Nginx 反向代理解决跨域问题
查看>>
nginx 后端获取真实ip
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 我们必须知道的那些事
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
Objective-C实现A-Star算法(附完整源码)
查看>>
Objective-C实现area under curve曲线下面积算法(附完整源码)
查看>>
Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
查看>>
Objective-C实现atoi函数功能(附完整源码)
查看>>
Objective-C实现base64加密和base64解密算法(附完整源码)
查看>>
Objective-C实现base85 编码算法(附完整源码)
查看>>
Objective-C实现basic graphs基本图算法(附完整源码)
查看>>
Objective-C实现BCC校验计算(附完整源码)
查看>>
Objective-C实现bead sort珠排序算法(附完整源码)
查看>>
Objective-C实现BeadSort珠排序算法(附完整源码)
查看>>