Hello World!
package main
import "fmt"
func main(){
fmt.Println("Hello World!") //Hello World!
}
package main
func main(){
var name string = "mustafa" //<-- Küçük harf private
var Surname string = "dikyar" //<-- Büyük harf public
}
Değişkenler
package main
import "fmt"
var global1 = "örnek"
//global2 := "örnek" => hata : .\variables.go:6:1: syntax error: non-declaration statement outside function body
func main(){
fmt.Println(global1, /*global2*/)
//Usage
var message1 string
message1 = "Hello 1!"
fmt.Println(message1) //Hello 1!
//Usage 2
var message2 string = "Hello 2!"
fmt.Println(message2) //Hello 2!
//Usage 3
var message3 = "Hello 3!"
fmt.Println(message3) //Hello 3!
//Usage 4
var number1, number2, number3 int = 1,2,3
fmt.Println(number1, number2, number3) //*1 *2 *3
//Usage 5
var number, name, gender = 2021, "Mustafa", false
fmt.Println(number, name, gender) //*2021 *Mustafa *false
//Usage 6
surname := "Dikyar"
fmt.Println(surname) //Dikyar
//Usage 7
age, language, money := 40, "golang", 100.5
fmt.Println(age, language, money) //*40 *golang *100.5
//Usage 8
letter := 'M'
word := "kelime"
sentence := `Bu bir cümledir.`
fmt.Println(letter, word, sentence) //*77 *kelime *Bu bir cümledir.
}
package main
import "fmt"
var (
name = "Mustafa"
surname = "Dikyar"
)
func main(){
fmt.Println(name, surname) //Mustafa Dikyar
}
Sabitler
package main
import "fmt"
const name = "Mustafa"
const pi = 3.14
func main(){
fmt.Println(name, pi) //Mustafa 3.14
}
Operatörler
Aritmatik Operatörler
Operatör | Açıklama |
---|---|
+ | Toplama |
- | Çıkarma |
/ | Bölme |
* | Çarpma |
% | Mod |
++ | Değeri bir artırır. |
-- | Değeri bir azaltır. |
İlişkisel Operatörler
Operatör | Açıklama |
---|---|
== | Eşit |
!= | Eşit değil |
> | Büyüktür |
< | Küçüktür |
>= | Büyük eşit |
<= | Küçük eşit |
Mantıksal Operatörler
Operatör | Açıklama |
---|---|
&& | ve |
! | değil |
Temel Atama Operatörler
Operatör | Açıklama |
---|---|
= | Sağdaki değeri sol tarafa atar. |
+= | Sağdaki değeri sol taraftaki değere ekler ve soldaki değişkene atar. |
-= | Sağdaki değeri sol taraftaki değerden çıkarır ve soldaki değişkene atar. |
*= | Sağdaki değeri soldaki değer ile çarpar ve soldaki değişkene atar. |
/= | Sağdaki değeri soldaki değere böler ve soldaki değişkene atar. |
Break Identifier
package main
import "fmt"
func main(){
/*GetData metotu ya veri dönecek ya hata dönecek olduğunu varsayarsak.
İki değerden birisi null gelecek hata alacağız.
Sadece data var mı yok mu ile ilgilenmek istediğimiz zaman _ (break identifier) ile boş bir tanımlayıcı kullanabiliriz.
*/
//errorCode, data := GetData()
//_, data := GetData()
var _, number, _ = 0, 15, ""
fmt.Println(number) //15
}
Enums
Doğrudan bir enum kullanımı yok.
package main
import "fmt"
type Language string
const(
Turkish Language = "tr"
English Language = "en"
Russian Language = "ru"
)
func GetLanguage(language Language){
fmt.Println(language)
}
func main(){
GetLanguage(Turkish) //tr
GetLanguage(Russian) //ru
}
Tür Dönüşümleri
package main
import (
"fmt"
"strconv"
)
func main() {
var firstNumber = "10"
//Convert
//string to int
number, _ := strconv.Atoi(firstNumber)
result := number + 3
fmt.Println(result) //13
//int to string
fmt.Println("Sonuç : " + strconv.Itoa(result)) //Sonuç : 13
//Casting
var secondNumber float64 = 11.1
var intNumber = int(secondNumber)
fmt.Println(intNumber) //11
}
Tarih-Saat İşlemleri
package main
import (
"fmt"
"time"
)
func main() {
birthDate := time.Date(2021, time.April, 27, 20, 0, 0, 0, time.UTC) //custom tarih
fmt.Println(birthDate)
currentDate := time.Now()
fmt.Println(currentDate) //o anki tarih
fmt.Println(currentDate.Year()) //o anki yıl
fmt.Println(currentDate.Day()) //o anki gün
fmt.Println(currentDate.Month()) //o anki ay
newDay := birthDate.AddDate(0, 0, 1).Day() //+1 gün ekler
newMonth := birthDate.AddDate(0, 1, 0).Month() //+1 ay ekler
newYear := birthDate.AddDate(1, 0, 0).Year() //+1 yıl ekler
fmt.Println(newDay, newMonth, newYear)
}
İf İfadesi
package main
import "fmt"
func main() {
number := 10
if number > 0 {
fmt.Println("Sayı pozitif")
} else if number < 0 {
fmt.Println("Sayı negatif")
} else {
fmt.Println("Sayı sıfıra eşit")
}
}
Switch İfadesi
package main
import "fmt"
func main() {
language := "de"
switch language {
case "tr":
fmt.Println("Türkçe")
case "en":
fmt.Println("İngilizce")
case "ru":
fmt.Println("Rusça")
default:
fmt.Println("Diğer")
}
}
For Döngüsü
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
While Döngüsü
Doğrudan bir while kullanımı yok.
package main
import "fmt"
func main() {
sum := 1
for sum < 10 {
sum += sum
fmt.Println(sum)
}
}
Range
package main
import "fmt"
func main() {
numbers := [5]int{10, 20, 30, 40, 50}
for i := range numbers {
fmt.Println("index", i, "value", numbers[i])
}
/*
index 0 value 10
index 1 value 20
index 2 value 30
index 3 value 40
index 4 value 50
*/
}
package main
import "fmt"
func main() {
capitals := map[string]string{"Türkiye": "Ankara", "İspanya": "Madrid", "Fransa": "Paris", "İtalya": "Roma"}
for key, val := range capitals {
fmt.Println("key", key, "value", val)
}
/*
key Türkiye value Ankara
key İspanya value Madrid
key Fransa value Paris
key İtalya value Roma
*/
}
Hata Yönetimi
package main
import (
"errors"
"fmt"
"log"
"os"
)
func main() {
//
_, err := os.Open("sample.txt")
if err != nil {
log.Fatal("Hata : ", err)
fmt.Println(err)
}
//
myError := errors.New("Bu bir hata!")
fmt.Println(myError.Error())
}
Diziler
package main
import "fmt"
func main() {
cities := [3]string{}
cities[0] = "Antalya"
cities[1] = "İstanbul"
cities[2] = "İzmir"
fmt.Println(cities) //get
cities[2] = "Ankara" //set
fmt.Println(cities[2])
}
package main
import "fmt"
func main() {
numbers := [...]int{0, 1, 2, 3, 4, 5}
fmt.Println(numbers)
}
package main
import "fmt"
func main() {
var colors [3]string
colors[0] = "Sarı"
colors[1] = "Mavi"
colors[2] = "Yeşil"
i := 0
for i <= len(colors)-1 {
fmt.Println(colors[i])
i++
}
}
Slices
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
mySlice := numbers[:] //: tüm elemanların sayısını ifade eder.
fmt.Println(mySlice) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
/*Slice veri tutmaz. Slice üzerinde yapılan bir değişiklik diziyi etkiler.*/
mySlice[2] = 11
fmt.Println(numbers) //[1, 2, 11, 4, 5, 6, 7, 8, 9, 0]
numbers = append(numbers, 10) //veri ekler
fmt.Println(numbers)
}
Maps
package main
import "fmt"
func main() {
//KeyValuePair
cities := make(map[int]string)
fmt.Println(cities) //map[]
cities[01] = "Adana" //set
cities[07] = "Antalya"
cities[34] = "İstanbul"
fmt.Println(cities) //map[1:Adana 7:Antalya 34:İstanbul]
fmt.Println(cities[34]) //İstanbul
delete(cities, 34)
fmt.Println(cities) //map[1:Adana 7:Antalya]
}
String Metotlar
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Contains("test", "st")) //true
fmt.Println(strings.HasPrefix("go_lang", "go")) //true
fmt.Println(strings.HasSuffix("golang.rar", "rar")) //true
fmt.Println(strings.Index("golang", "a")) //3
}
Fonksiyonlar
package main
import "fmt"
func main() {
sayHello("Mustafa")
}
func sayHello(name string) {
fmt.Println("Hello " + name)
}
package main
import "fmt"
func main() {
add(1, 4)
}
func add(number1, number2 int) int {
return number1 + number2
}
package main
import "fmt"
func main() {
name, _ := getNameAndSurname("Mustafa Dikyar")
fmt.Println(name)
}
func getNameAndSurname(fullName string) (string, string) {
splitted := strings.Split(fullName, " ")
return splitted[0], splitted[1]
}
package main
import "fmt"
func main() {
sentence := combine("Bu", "bir", "cümledir.")
fmt.Println(sentence)
}
func combine(terms ...string) string { //değişken sayıda parametre alması durumu
var sentence string
for _, term := range terms {
sentence += term + " "
}
return sentence
}
package main
import "fmt"
func main() {
name, surname := split("Mustafa Dikyar")
fmt.Println(name, surname)
}
func split(fullName string) (name, surname string) {
splitted := strings.Split(fullName, " ")
name = splitted[0]
surname = splitted[1]
return
}
package main
import "fmt"
func main() {
anonymous := func(name string) (fullMessage string) { //Anonim Metot
fullMessage = "Hello " + name
return
}
message := anonymous("Mustafa")
fmt.Println(message)
}
}
Defer
package main
import "fmt"
func main() {
//defer, içerisindeki fonksiyondaki tüm işlemler bitene kadar ilgili işlemi bekletir.
defer fmt.Println("Hello")
fmt.Println("One")
fmt.Println("Two")
fmt.Println("Three")
/*
One
Two
Three
Hello
*/
}
package main
import "fmt"
var isConnect bool = false
func main() {
fmt.Printf("connection open : %v\n", isConnect)
databaseProcessing()
fmt.Printf("connection open : %v\n", isConnect)
/*
connection open : false
Connect to DB
Deferring disconnect!
connection open : true
Doing something
Disconnected!
connection open : false
*/
}
func databaseProcessing() {
connect()
fmt.Println("Deferring disconnect!")
defer disconnect()
fmt.Printf("connection open : %v\n", isConnect)
fmt.Println("Doing something")
}
func connect() {
isConnect = true
fmt.Println("Connect to DB")
}
func disconnect() {
isConnect = false
fmt.Println("Disconnected!")
}
Structs
package main
import "fmt"
type Human struct {
Name string
Surname string
Age int
}
func main() {
mustafa := Human{Name: "Mustafa", Surname: "Dikyar", Age: 27}
fmt.Println(mustafa.Age) //27
}
package main
import "fmt"
type Human struct {
Name string
Surname string
Age int
}
//constructure
func CreateHuman() *Human {
human := new(Human)
return human
}
func main() {
human := CreateHuman()
human.Name = "Mustafa"
fmt.Println(human.Name)
}
Interfaces
package main
import "fmt"
type product struct {
name string
}
type iProductRepository interface {
getProductName() string
}
func (product product) getProductName() string {
return product.name
}
func printProductName(product iProductRepository) {
fmt.Println(product.getProductName())
}
func main() {
product := product{name: "ürün 1"}
printProductName(product)
}