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

你可能感兴趣的文章
Regular Expression Notes
查看>>
PHP $FILES error码对应错误信息
查看>>
PHP $_FILES函数详解
查看>>
PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
查看>>
php &amp; 和 &amp;amp; (主要是url 问题)
查看>>
php -- 魔术方法 之 判断属性是否存在或为空:__isset()
查看>>
php -- 魔术方法 之 获取属性:__get()
查看>>
php -树-二叉树的实现
查看>>
PHP -算法-二路归并
查看>>
php 2条不一样 的json数据 怎么放在一个json里面_如果你是PHP开发者,请务必了解一下Composer...
查看>>
php 360 不记住密码,JavaScript_多种方法实现360浏览器下禁止自动填写用户名密码,目前开发一个项目遇到一个很 - phpStudy...
查看>>
regExp的match、exec、test区别
查看>>
php 404 自定义,APACHE 自定义404错误页面设置方法
查看>>
PHP 5.3.0以上推荐使用mysqlnd驱动
查看>>
php 7.2 安装 mcrypt 扩展: mcrypt 扩展从 php 7.1.0 开始废弃;自 php 7.2.0 起,会移到 pecl...
查看>>
php aes sha1解密,PHP AES加密/解密
查看>>
php array 分片,PHP常用数组函数小结
查看>>
php CI框架单个file表单多文件上传例子
查看>>
php composer
查看>>
reflow和repaint引发的性能问题
查看>>