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

你可能感兴趣的文章
localhost:5000在MacOS V12(蒙特利)中不可用
查看>>
logstash mysql 准实时同步到 elasticsearch
查看>>
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现&lt; 以及&gt; 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>