博客
关于我
【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/

你可能感兴趣的文章
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>
mysql 表的操作
查看>>
mysql 视图,视图更新删除
查看>>
MySQL 触发器
查看>>
mysql 让所有IP访问数据库
查看>>
mysql 记录的增删改查
查看>>
MySQL 设置数据库的隔离级别
查看>>
MySQL 证明为什么用limit时,offset很大会影响性能
查看>>
Mysql 语句操作索引SQL语句
查看>>
MySQL 误操作后数据恢复(update,delete忘加where条件)
查看>>
MySQL 调优/优化的 101 个建议!
查看>>
mysql 转义字符用法_MySql 转义字符的使用说明
查看>>
mysql 输入密码秒退
查看>>
mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
查看>>
mysql 里对root及普通用户赋权及更改密码的一些命令
查看>>