Ir Aprendizaje (memo)

array 和 rebanada

En Go, la matriz es el valor. Una matriz de matrices se dan otra copia todos sus elementos. Si una matriz pasa a una función, recibirá una copia de la matriz en lugar de un puntero. Tamaño de la matriz es parte de su tipo. Tipo [10] int y [20] int es diferente. Una matriz es una asignación fija no se puede cambiar. Cuando la planificación detallada de la capa de memoria, la matriz es muy útil, ya veces también para evitar la asignación de memoria excesiva, pero se utiliza principalmente como un miembro de la rebanada. Rebanada contiene una referencia a la matriz subyacente, si se le dará otro trozo de una rebanada, se refieren a la misma matriz. Si una función se pasa como un parámetro para una rebanada, también es visible para modificar las secciones de los elementos de la persona que llama, esto puede ser entendido como un puntero pasado la parte inferior de la matriz.
En términos simples, es el valor de la matriz, similar a la matriz de punteros rebanada. Otra copia sigue el valor .

Funciones estructura

ir a la función .go que no pertenece a la función de la estructura tiene una característica puede ser atribuido a la función de cualquier tipo (o cualquier tipo de puntero), la función que corresponde a la propiedad pagado a alguien, una persona puede llamar directamente a la función. La función la propiedad al puntero estructura, la estructura se puede llamar a esta función durante el uso de esta estructura (el nombre de esta estructura como punteros) dentro de la función. Además,
si la casa está en función de la estructura (en lugar de puntero), la estructura todavía puede ser utilizado, pero la modificación de estructura no afectará la función es copia externa (transferencia, pero una copia de la desreferencia puntero podría apuntar al objeto de origen)

package main

import "fmt"

type Handle int64
func (h Handle) Show1(i int64) int64{
    h = 1
    return i + int64(h)
}
func (h *Handle) Show2(i int64) int64{
    *h = 2
    return i + int64(*h)
}

func main() {
    var hand Handle = 0
    fmt.Println(hand.Show1(100))
    fmt.Println(hand)

    fmt.Println(hand.Show2(100))
    fmt.Println(hand)
}

101
0
102
2
Publicado seis artículos originales · ganado elogios 0 · Vistas 212

Supongo que te gusta

Origin blog.csdn.net/jingshuipengpeng/article/details/105121549
Recomendado
Clasificación