fmt

fmt.Println("hello world")

fmt.Printf("%T",a)打印a 的类型
fmt.Printf("%v",a)打印a 的值

格式化

fmt.Sprintf(格式化形式,参数列表)
格式化样式:字符串形式,格式化动词以%开头。
参数列表:多个参数以逗号分隔,个数必须与格式化样式中的个数一一对应,否则会报错
go的格式化命名延续了C语言的风格:

1361758-20190908151713389-1041092571.png

    profile := &struct {
        Name string
        Age int
    }{
        Name:"小明",
        Age:12,
    }
    // 在%v的基础上,对结构体字段名和值进行展开
    fmt.Printf("%%+v %+v \n",profile) //%+v &{Name:小明 Age:12}
    // 输出go语言语法格式的值
    fmt.Printf("%%#v %#v \n",profile) //%#v &struct { Name string; Age int }{Name:"小明", Age:12}
    // 输出go语言中语法格式的类型
    fmt.Printf("%%T %T \n",profile) //%T *struct { Name string; Age int }

base64编码实例

package main

import (
    "encoding/base64"
    "fmt"
)

func main()  {
    // 需要处理的字符串,可以是字符串,也可以是二进制数据
    str := "hello world"
    //编码信息,用标准编码的方法进行编码,传入的字符串需要转换为字节数组才能让这个函数使用
    encoding_str := base64.StdEncoding.EncodeToString([]byte(str))

    // 输出编码完成的信息
    fmt.Println(encoding_str) //aGVsbG8gd29ybGQ=

    // 解码信息
    data,err := base64.StdEncoding.DecodeString(encoding_str)

    //错误处理
    if err!=nil{
        fmt.Println(err)
    }else{
        // data 是一个字节数组 ([]byte)
        // 转换为字符串
        fmt.Println(string(data))  //hello world
        fmt.Println(data) //[104 101 108 108 111 32 119 111 114 108 100]
    }

}

ini文件说明

1361758-20190908152932277-1957023809.png

由多行文本组成,整个配置由 [] 拆分为多个 段,每个段中又以 = 分割为键和值
ini文件以 ; 置于行首十位注释,那行将不会被处理和识别

操作ini文件的读写

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    filename := "F:\\project\\study_go\\从入门到入土\\ini测试.ini"

    // 打开文件,如果成功打开,会返回文件句柄,同时返回打开文件时可能发生的错误err
    file, err := os.Open(filename)

    //文件找不到,即文件打开错误,err将不是nil。
    if err != nil {
        fmt.Println("文件不存在")
    }

    //在文件使用完后必须关闭,
    defer file.Close()

    //go语言中总是将文件以二进制格式打开,bufio包即可以方便的读取二进制文件
    // 使用读取器读取文件,传入文件构造成一个读取器
    reader := bufio.NewReader(file)

    //当前读取的段的名字
    var sectionName string

    // 构造一个循环,不断的读取文件中的每一行
    for {
        //从文件中读取字符串,知道碰到 \n ,也就是行结束,这个函数返回读取到的行字符串\n也可能是读取到的错误,离去文件读取完毕
        line, err := reader.ReadString('\n')
        if err != nil {
            break
        }

        //除去两边的空白,空格,回车符,换行符等
        line = strings.TrimSpace(line)

        //忽略空行
        if line == "" {
            continue
        }

        // 忽略注释
        //if string(line)[0] == ";" {
        //  continue
        //}

        //读取,判断是否为ini文件的段
        if line[0] == '[' && line[len(line)-1] == ']' {
            sectionName = line[1 : len(line)-1]
        } else if sectionName == "core" { // 键值判断
            // 用=切割获取键值对
            part := strings.Split(line, "=")

            //保证切开的只有1个等号分割的键值情况
            if len(part) == 2 {
                // 去掉值多余空白
                strings.TrimSpace(part[1])
                fmt.Println(part[1])
            }
        }

    }
}

转载于:https://www.cnblogs.com/0916m/p/11484461.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值