package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Your IP is %s", r.RemoteAddr)
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
ip := r.Header.Get("X-Forwarded-For")
// или
ip := r.Header.Get("X-Real-IP")
var fileWork = ioutil.ReadFile("testFile.txt")
// создаём переменную которую будем перезаписывать, сразу наполняем данными и сразу приводим к string чтобы было удобно работать
new_fileWork := string(fileWork)
for _, link := range arrLinks {
var regul = link + ".txt"
myRegexp, err := regexp.Compile(regul)
// new_fileWork передаем как параметр, его же и обновляем, за счёт этого при каждой итерации данные не теряются как в вашем примере
new_fileWork = myRegexp.ReplaceAllString(new_fileWork , link) // Редактируем.
}
var new_fileWorkB = []byte(new_fileWork)
// у вас host = "https://smtp.mail.ru:25", а должен быть "smtp.mail.ru"
auth := smtp.PlainAuth("", from, password, host)
import (
"log"
"net/smtp"
)
func main() {
// Set up authentication information.
// тут порт не указан, скорее всего ругается именно в этой строке
auth := smtp.PlainAuth("", "user@example.com", "password", "mail.example.com")
// Connect to the server, authenticate, set the sender and recipient,
// and send the email all in one step.
to := []string{"recipient@example.net"}
msg := []byte("To: recipient@example.net\r\n" +
"Subject: discount Gophers!\r\n" +
"\r\n" +
"This is the email body.\r\n")
// тут порт указан, т.е. host:port, но не указывается протокол типа https, тут протокол SMTP
err := smtp.SendMail("mail.example.com:25", auth, "sender@example.org", to, msg)
if err != nil {
log.Fatal(err)
}
}
package main
import (
"fmt"
php "github.com/kovetskiy/go-php-serialize"
)
func main() {
s := `a:6:{s:7:"__flash";a:1:{s:3:"mes";s:5:"Hello";}s:4:"__id";s:36:"3c5035d9-aea1-4f08-8325-9e598921e2a9";}`
val, err := php.Decode(s)
if err != nil {
fmt.Println(err)
return
}
session := val.(map[interface {}]interface {})
flash := session["__flash"].(map[interface {}]interface{})
fmt.Println("id", session["__id"])
fmt.Println("mes", flash["mes"])
}
session, ok := val.(map[interface {}]interface {})
if !ok {
// с val явно что-то не так, оно не соответствует типу map[interface {}]interface {}
}
flash, ok := session["__flash"].(map[interface {}]interface{})
if !ok {
// ...
}
closeFrame := ws.NewCloseFrame([]byte{})
// отправляем
err := ws.WriteFrame(wsconn, closeFrame)
header, err := ws.ReadHeader(wsconn)
if header.OpCode == ws.OpClose {
// клиент подтвердил закрытие, соединение можно закрывать
wsconn.Close()
}
type BigStruct struct {
field1 int
filed2 string
field3 uint
field4 []byte
...
field50 string
}
func Report(s BigStruct)
s := BigStruct{}
// заполняем поля
Report(s)
func Report(s *BigStruct)
s := BigStruct{}
// заполняем поля
Report(&s) // тут добавился & - берём адрес структуры, а не саму структуру
// создаём переменную s сразу с типом указатель на BigStruct
s := &BigStruct{}
// заполняем поля
Report(s) // поскольку s уже является указателем - & тут не нужен
var s *BigStruct
var i *int
i = new(int)
*i = 10 // пишем значение
fmt.Printf("i: %v\n", i)
fmt.Printf("*i: %v\n", *i)
i: 0xc0000160d8 (это адрес памяти, где лежит значение переменной i)
*i: 10 (а это её значение)
f, err := os.OpenFile("file.txt", os.O_RDWR, 0666)
if err != nil {
log.Fatalln(err)
}
type MySQLStorage struct {
db *sql.DB
}
func NewMySQLStorage(db *sql.DB) *MySQLStorage {
return &MySQLStorage{
db: db,
}
}
func (sg *MySQLStorage) StorePurchases(ctx context.Context, sp []*Purchase) ([]*Purchase, error) {
for _, p := range sp {
fmt.Printf("%+v\n", p)
}
return sp, nil
}
func (sg *MySQLStorage) StoreSubscriptionPurchases(ctx context.Context, sp []*SubscriptionPurchase) ([]*SubscriptionPurchase, error) {
for _, p := range sp {
fmt.Printf("%+v\n", p)
}
return sp, nil
}
db := connectToDB...
sg := NewMySQLStorage(db)
NewValidate(sg "", googleConfig)
package main
import "testing"
func Test_sum(t *testing.T) {
tt := []struct {
args GetArgs
sum int
}{
{Args {2, 4}, 6},
{Args {2, -2}, 0},
}
for _, tc := range tt {
tci := tc.args.(GetArgs)
s := Sum(tci)
if s != tc.sum {
t.Errorf("sum of %v and %v should be %v, received- %v", tc.args.GetA(), tc.args.GetB(), tc.sum, s)
}
}
}
package main
import (
"fmt"
"unsafe"
)
type S1 struct {
f1 int
}
func main() {
s1 := S1{}
s2 := struct{}{}
fmt.Printf("s1 size: %v\n", unsafe.Sizeof(s1))
fmt.Printf("s2 size: %v\n", unsafe.Sizeof(s2))
}
s1 size: 8
s2 size: 0
type FileInfo interface {
Name() string // base name of the file
Size() int64 // length in bytes for regular files; system-dependent for others
Mode() FileMode // file mode bits
ModTime() time.Time // modification time
IsDir() bool // abbreviation for Mode().IsDir()
Sys() interface{} // underlying data source (can return nil)
}
type FileInfo = fs.FileInfo
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
// текущая папка
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
for _, file := range files {
fmt.Println(file.Name(), file.IsDir())
}
}
type Order struct {
ID uint `gorm:"primaryKey;autoIncrement;unique"json:"id"`
Owner string `json:"owner"`
Status string `gorm:"default:ordered"json:"status"`
Phone int `json:"phone"`
Order []OrderProduct `gorm:"foreignKey:OrderId"json:"products"`
}
type OrderProduct struct {
ID uint `gorm:"primaryKey;autoIncrement;unique"json:"id"`
// добавляем это поле, чтобы была связь с таблицей Orders
OrderID uint `json:"-"`
Brand string `json:"brand"`
ItemId int `json:"item_id"`
Img string `json:"img"`
ItemTotal int `json:"item_total"`
Price string `json:"price"`
Quantity int `json:"quantity"`
Title string `json:"title"`
Type string `json:"type"`
}