notas ir a estudiar el desarrollo del núcleo (16) - Las funciones de fecha y hora, incorporado funciones, manejo de excepciones

Efecto: Statistical cierto tiempo la ejecución de código, se necesita tiempo, tiempo de paquete requiere para importar
la función por un método que comprende el uso de todos

package main

import (
	"fmt"
	"time"
)
func main() {
	/*
	1. 获取当前时间。
	 */
	fmt.Println(time.Now())
	// 2019-05-03 22:43:03.9052219 +0800 CST m=+0.005996401
	// type = time.Time

    /*
    2. 获取当前的年月日时分秒
     */
    fmt.Println(time.Now().Year())               //2019
    fmt.Println(time.Now().Month())              //国外风格:May
    fmt.Println(time.Now().int(Month()))         //中国风:5
    fmt.Println(time.Now().Day())                //3
    fmt.Println(time.Now().Hour())               //22
    fmt.Println(time.Now().Minute())             //48
    fmt.Println(time.Now().Second())             //46

    /*
	3. 格式化输出时间
	 */
    fmt.Println()
	fmt.Printf("%02d/%02d/%02d %02d:%02d:%02d",time.Now().Year(),time.Now().Month(),time.Now().Day(),time.Now().Hour(),time.Now().Minute(),time.Now().Second())

	/*
	4. 这个奇葩的Format格式我也是醉了,2006/01/02 15:04:05这个是当前时间,类似时间戳。
	 */
	fmt.Println(time.Now().Format("2006/01/02 15:04:05"))          //当前时间
	fmt.Println(time.Now().Format("01"))         				   //只取当前月

	/*
	5. 时间常量:
	time.Nanosecond             //1纳秒
	time.Microsecond            //1微秒
	time.Millisecond            //1毫秒
	time.Second                 //1秒
	time.Minute                 //1分钟
	time.Hour                   //1小时
	
	使用方法: 100 * time.Nanosecond     //100纳秒 
	不可以用 time.Microsecond / xx,     //只可以用整数*多少,不可以用本身除以多少
	*/
	time.Sleep(100 * time.Millisecond)  //一般结合sleep函数使用,休眠100毫秒

	/*
	6. time.Unix()和time.UnixNano() 时间戳,后续开发会用到时间戳获取不同的数
	 */
	fmt.Println(time.Now().Unix())                         // 1556901572
	fmt.Println(time.Now().UnixNano())                     // 1556901572258609400

}

Caso 1: la escritura de código, la ejecución de código en un cierto período de tiempo

Pensando Análisis: Función principal es un paquete para ser probado:
startTime = Time.now () el Unix ().
Test ()
endTime = Time.now () el Unix ().
"Código largo que se ejecuta como sigue:" Fmt.Println ( endTime - fecha de inicio)

Las funciones integradas

  1. len () para encontrar la longitud, como cadena de caracteres (unidades), Array (unidades de elemento), rebanada, mapa, canal

  2. nueva () se utiliza para asignar memoria, utilizado principalmente para asignar un tipo de valor, un puntero se devuelve, nuevos nuevos parámetros único tipo, número o la cadena no puede pasar

package main

import "fmt"

func main() {
	/*
	new(int)都做了什么:首先开辟一块内存空间,存了0进去;开辟了另一块空间,把这个0对应的内存地址当做值存入这个空间,然后num作为指针变量指向0对应的内存地址
	 */
	num := new(int)        
	fmt.Printf("num数据类型为%T,num的地址为%v,num的值为%v,*num的值为%v\n",num,&num,num,*num)
	*num = 100
	fmt.Printf("num数据类型为%T,num的地址为%v,num的值为%v,*num的值为%v",num,&num,num,*num)
	/*
	num数据类型为*int,num的地址为0xc000082018,num的值为0xc000056080,*num的值为0
	num数据类型为*int,num的地址为0xc000082018,num的值为0xc000056080,*num的值为100
	地址都是系统分配的,不同电脑num的地址和num的值肯定不一样
	 */
}
  1. la marca () se utiliza para asignar memoria, utilizado principalmente para asignar un tipo de referencia, el canal, mapa, rebanada, éstos no aprendieron, y luego sumar las notas posteriores

El manejo de excepciones

Propósito: Una vez que la anomalía se presentó en el programa de accidente, no se ejecutará abajo, después de una excepción de error de manipulación con el fin de capturar o el procesamiento de errores, por lo que la ejecución del programa continúa a la baja, y no a causa de un error que llevó al colapso de todo el programa.

Python: try excepto finalmente
java: intento de captura por último

Ir control de excepciones:
Uso Defer + recuperarse () + pánico

Go puede lanzar una excepción de pánico, y recuperar en la captura Defer () la excepción.

package main

import (
	"fmt"
)

func test() {
	/*
	使用匿名函数,可以打印err具体信息,还能继续执行代码,增加了代码的健壮性
	 */
	defer func() {
			if err := recover() ; err != nil {
			fmt.Printf("发现错误,错误具体信息为%v",err)
			//预警机制:反馈错误信息等
			fmt.Println("发送给系统管理员")
		}
	}()
	
	num1 := 10
	num2 := 0
	res := num1/num2
	fmt.Println(res)
}

func main() {
	test()
	fmt.Println("\n检测上面的代码是不是发生错误这一条也可以打印")
}

error personalizado
puede ser utilizado errors.New () funciones integradas y el pánico

  1. errors.New ( "Descripción Error") el apoyo personalizado de error, error err para crear un tipo de error, seguido por el uso de pánico (err), pánico llamará al contenido de "descripción de error" de.
  2. pánico, la salida de un mensaje de error incorporado en la función, el tipo de interfaz acepta un valor como un parámetro, la recepción de la variable de error y sale del programa.

¿Qué tan profundo entendimiento del tipo de error de error:
? Shell Linux en el eco $, un comando tiene éxito, entonces el $?0, Ir en nil es 0, el error0 Programa sin excepción, el error no es 0, el programa se termina directamente.

package main
import (
	"errors"
	"fmt"
)
func readConf (conf string) (err error) {
	if conf == "my.conf" {
		return nil
	} else {
		return errors.New("读取文件错误,请重新输入")     //error.New()是增加文本panic类型,需要配合panic使用
	}
}
func main() {
	/*
	需求:将配置文件传入,如果配置文件名字不为指定值,则抛出异常,如果为指定值则正常执行程序
	 */
	err := readConf("shit" )
	if err != nil {
		panic(err)
	}
	fmt.Println("看到此句则证明 err==nil")
}
Publicado 50 artículos originales · alabanza ganado 18 · vistas 4013

Supongo que te gusta

Origin blog.csdn.net/weixin_41047549/article/details/89812037
Recomendado
Clasificación