Zoeken…


Stringer

De interface fmt.Stringer vereist dat aan een enkele methode, String() string wordt voldaan. De tekenreeksmethode definieert de "native" tekenreeksindeling voor die waarde en is de standaardweergave als de waarde wordt opgegeven voor een van de fmt pakketten voor het formatteren of afdrukken van routines.

package main

import (
    "fmt"
)

type User struct {
    Name  string
    Email string
}

// String satisfies the fmt.Stringer interface for the User type
func (u User) String() string {
    return fmt.Sprintf("%s <%s>", u.Name, u.Email)
}

func main() {
    u := User{
        Name:  "John Doe",
        Email: "[email protected]",
    }

    fmt.Println(u)
    // output: John Doe <[email protected]>
}

Playground

Basic fmt

Pakket fmt implementeert geformatteerde I / O met behulp van opmaakwerkwoorden :

%v    // the value in a default format
%T    // a Go-syntax representation of the type of the value
%s    // the uninterpreted bytes of the string or slice

Formaatfuncties

Er zijn 4 hoofdfunctietypen in fmt en verschillende variaties daarin.

Afdrukken

fmt.Print("Hello World")        // prints: Hello World
fmt.Println("Hello World")      // prints: Hello World\n
fmt.Printf("Hello %s", "World") // prints: Hello World

Sprint

formattedString := fmt.Sprintf("%v %s", 2, "words") // returns string "2 words"

fprint

byteCount, err := fmt.Fprint(w, "Hello World") // writes to io.Writer w

Fprint kan worden gebruikt in http handlers:

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello %s!", "Browser")
}   // Writes: "Hello Browser!" onto http response

Scannen

Scannen scant tekst gelezen van standaardinvoer.

var s string
fmt.Scanln(&s) // pass pointer to buffer
// Scanln is similar to fmt.Scan(), but it stops scanning at new line.
fmt.Println(s) // whatever was inputted

Stringer-interface

Elke waarde die een String() -methode heeft, implementeert de fmt inteface Stringer

type Stringer interface {
        String() string
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow