Published on

Golang的一些东西

Authors
  • avatar
    Name
    Et cetera
    Twitter

基本类型下的注意

package main

import "fmt"

// 该位置声明变量,作用于等同package,该目录下其他函数也能访问该变量
var name = "Golang"

func main() {
  // main函数下两种方式没有区别
  // var singer = "aimyon"
  singer := "aimyon"
  var count float64 = 10969.3636

  for count:=10;count>0;count--{
    // 这里的count就是一个局部变量,for循环代码块执行后,销毁
    fmt.Println(count)
  }

  // 4 表示宽度,即最少字符个数(包含小数点和小数)
  // 2 表示经度,小数点后边显示的位数
  fmt.Printf("%4.2f", count)
  // 使用 0 向左填充
  fmt.Printf("%04.2f", count)

  // 整数转浮点数
  intn := 10
  fln := float64(intn)

  // 浮点数转整数,会截断小数点后的数
  flon := 10969.3636
  in := int(flon)

  // 数字转字符
  countdown := 9
  // Sprintf 功能类似 Printf
  str := fmt.Sprintf("It's %v seconds.", countdown)
  fmt.Printf(str)
}

实现一个简单的 Http 服务器

package main

import "net/http"

func main() {
	http.Handle("/", http.FileServer(http.Dir(".")))
  // 错误处理
	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		return
	}
}

字符串格式化

package main

import "fmt"

type point struct {
	x, y int
}

func main() {
	s := "Aimyon"
	n := 36
	p := point{1, 2}
	fmt.Println(s, n) // Aimyon 123
	fmt.Println(p)    // {1, 2}

	fmt.Printf("s=%v\n", s)  // s=Aimyon
	fmt.Printf("n=%v\n", n)  // n=36
	fmt.Printf("p=%v\n", p)  // p={1, 2}
	fmt.Printf("p=%+v\n", p) // p{x: 1,y: 2}
	fmt.Printf("p=%#v\n", p) // p=main.point{x: 1, y: 2}

	f := 3.1415926
	fmt.Println(f)          // 3.1415926
	fmt.Printf("%.2f\n", f) // 3.14
}

时间处理

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	fmt.Println(now) // 2023-04-13 23:28:22.358079 +0800 CST m=+0.000074167
	t := time.Date(2023, 4, 13, 22, 34, 40, 0, time.UTC)
	t2 := time.Date(2023, 4, 13, 23, 43, 20, 0, time.UTC)
	fmt.Println(t)                                                  // 2023-04-13 22:34:40 +0000 UTC
	fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute()) // 2023 April 13 22 34
	fmt.Println(t.Format("2023-01-02 16:05:02"))                    // 131310-04-13 46:40:13
	diff := t2.Sub(t)
	fmt.Println(diff)                           // 1h8m40s
	fmt.Println(diff.Minutes(), diff.Seconds()) // 68.66666666666667 4120
	t3, err := time.Parse("2006-01-02 15:04:05", "2023-04-13 22:34:40")
	if err != nil {
		panic(err)
	}
	fmt.Println(t3 == t)    // true
	fmt.Println(now.Unix()) // 1681400898
}